Archive

Archive for the ‘Technology’ Category

Requisite Commemoration Of An Unwanted Anniversary

March 8th, 2021 No comments

It is currently just after 11:00 PM as I write this, but I have back-dated this post to 7:18 PM on March 08, 2021. That is, to the minute, exactly one year since I last hugged my friends — one year since I last physically interacted with anyone outside of my immediate family. What should have been a memorable night because of time my friends is now more memorable because of how long I’ve since had to spend away from them.

We had stepped out of a nearby restaurant after getting dinner and I hugged them our usual goodbye before we walked to our respective vehicles. If I had known then, that it would be our last “normal” hangout, I can’t help but wonder: would I have held their embrace for just that much longer, despite the probable awkwardness? Would I have been willing to stand with them in the parking lot and chat for just another few moments, despite my growing tiredness from the previous night’s bout of insomnia?

One thing that’s stuck with me for this past year is just how incredibly UNFAIR this pandemic seems to be handled: I see so many people in the other parts  of my city still eating out at outdoor restaurants, openly playing team sports at the parks, etc. And most frustrating of all, so many people who refuse to wear a mask properly at grocery stores. (C’mon, really? It’s one piece of fabric, covering your nose and mouth. It shouldn’t take you even 1 minute to get it right and yet, here we are 1 entire year later…it’s a mask, not a damn chin diaper!)

On the better extreme, my parents and I are trying to be incredibly diligent about our health — I’m lucky enough to be able to work from home, and we are all staying self-isolated at home except for going out for work, food, or the occasional medical appointments only as needed, and wearing masks whenever we step out of the house for any reason at all. And yet because of the people who aren’t doing the right thing, we who are will have to be in isolation for that much longer since they will directly be a cause for the pandemic continuing to spread. Because of them, it will be that much longer before I can safely hug my friends again.

But even through all of the terrible things that have happened in this past year, I try to stay positive: an entirely new mRNA-based vaccine technology was developed and finalized more quickly than any in history. And even though they are rarely face-to-face any more, group hangouts with friends have actually become slightly more frequent instead of less, thanks to technologies like Discord and Google Duo, Heck, just a few weeks ago we had Perseverance land on Mars and it took high-def video of itself through the process from 3 different cameras — which, if you haven’t yet watched, please do yourself a favor and go to NASA’s recorded stream right now. We even had microphones on it to record gusts of wind. You read that correctly: We can now clearly listen to the gusts of wind on another planet. How fricking cool is that?! Answer: very.

So, in the end I am hopeful: hopeful that my parents will be able to get their vaccine appointments soon; hopeful that my friends and I will be able to get ours shortly thereafter; and hopeful that we will continue to see these sorts of communication and medical technologies become more mainstream. And while I know that “normal” won’t ever be the norm again, I am hopeful that our lives will return to something resembling normalcy one day soon. 

I yearn to safely hug my friends once more. Those first few embraces will be long and awkward and oh so wonderful.

Categories: COVID-19, Life, Science, Technology Tags:

On Yearly Themes, Revisited

December 25th, 2020 No comments

2020: The Year That…Well, Wasn’t

I have long been a fan of the works of Myke Hurley and CGP Grey, especially their productivity podcast Cortex. Every year since 2018, they have spoken not about New Year’s resolutions — which are ephemeral by nature — but instead about a yearly theme, more a broad concept or category of self-improvement than a specific promise or goal. I absolutely love this idea and have since been implementing it myself, but only this past year started doing it formally through written journalling. (Please see the linked page for more details and explanatory podcast episodes about it.)

Let’s get the obvious out of the way: The COVID-19 pandemic has wrecked quite a lot of plans for quite a lot of people, those of myself included. My year of 2020 was supposed to the Year of Positive Discomfort, forcing myself to break out of my comfort zone in small but beneficial ways. But 2020 and the ongoing pandemic have easily put a halt to that, as many of its goals were things like “be more social”, “join some interesting clubs”, and so on…very little of which has been feasible or even possible.

My Yearly Themes for 2021

However, thanks to the recently-approved COVID-19 vaccines, 2021 will assuredly bring the pandemic to an end (yay!), and with that end, the self-improvement that 2020 could not. In addition, I’ve discovered a rather bad habit of myself that I’d like to reduce, so my 2021 will have two overarching themes:

  • Year of Positive Discomfort; and
  • Year of Intent.

The specifics of both are too personal to reveal (yet); but suffice it to say that Positive Discomfort as a theme is simply the continuation of my previous yearly theme into 2021, with some adaptations (e.g., for socialization being almost entirely virtual now).

What of the second theme, though? “Intent”? Through my (admittedly sparse) journalling in 2020, I’ve come to realize that a lot of the things that upset me significantly were due to my time being spent in ways that I do not want, or in ways that aren’t helpful to me as a young adult becoming my own person, or (in one particular case) being spent with the wrong group of people. This year will be different: My time is my own. I’m going to make sure how I spend it is much more of my own volition, and much less simply letting things happen to/around me. What I do will be much more intentional and with far more direct reasoning than simply “to pass time.” Nothing gets added to my calendar without my explicit approval. I, and I alone, will be the arbiter of my own action choices, not some third party (however well-intentioned they may be).

My Theme System Journal

This is where the Theme System Journal comes into play: It allows me to easily and effectively chart my progress, and keep track of my themes, goals, and related tasks. The Theme System Journal is split into three sections: Yearly Themes, Journal Pages, and Daily Themes. Aside from these, there is almost no other structure imposed or paradigm mandated. That is the one thing I love most about this journal: it is incredibly open-ended. Everyone can apply it to their own themes in their own ways, to whatever suits them best. Here is a brief rundown of how I use mine — if for no other reason than as a reference to myself:

The Yearly Themes section is fairly self-explanatory: Here, I have written each yearly theme along with the overall intent of that theme and some ideal specific goals that I’d like to achieve.

The second section of the journal is for daily journalling. In here, each page is split into 4 blocks, with the third being much larger than the rest. These, in turn, are where I answer four questions every day:

  • Non-Zero Task?
    I have tried to follow the Non-Zero Days philosophy ever since it was introduced to me in late 2013, because I think it (mostly) is a great idea to maintain a good trend of self-improvement. In short, every day should have something, however small or minor, that pushes me toward one of my goals or helps me accomplish something. So, in my journal, every morning (or perhaps on the night before), I look through my todo list and make myself a very short list of tasks in the journal: 1-2 things that, as long as they get done, make my day a productive one in spite of whatever else may occur.
  • GG?
    (Short for “Goodness/Gratitude”, though inspired by the “good game” shorthand from video games.) Did something good happen to me or someone I care for? Am I especially grateful for a specific thing or person today? Did someone help me in a particular way that was extraordinarily generous of their own time?
  • Lesson Learned?
    As part of my theme of Intent, I want to really be a better scientist, and either through direct research, reading documentation, being told by a friend, or just doing some quick experiments myself (e.g., a particular piece of code, framework, or software tool), ensure that I dedicate at least a little bit of time each day to learning something. Most probably this will always be software- or code-related, as that is where my hobbies lie; but learning trivia about other topics can also be fascinating!
  • Time Spent?
    Yes, this is probably more “correctly” tracked directly through tools like Toggl and such; but I find that even though I have those installed and enabled, I haven’t really used them to the extent I should be. Jotting down estimates of both my predicted time spent on various tasks through the day as well as what I actually accomplished will help me track my time and use it more productively and purposefully.

The third section, Daily Themes, is arranged as a tabular checklist. For this, I label each column with the date (MM/DD) and each row with a task or ideal of one of my goals, including more outwardly-visible tasks such as as “socialize with friends” or “work on hobby project” and also health-related tasks and chores that I want to do more often. Then at the end of each day, I mark off in the provided circle how well I accomplished that task: empty if I did nothing for it, filled if I did something significant for it, and half-filled if I did something productive for it but really was not a major use of my time. For instance, for my “socialize with friends” task, I’ll keep it empty if I did not speak with friends at all that day, half-filled if I had a very brief or text-only conversation with them (i.e., checking in, saying hello, that sort of thing), and completely filled if I spent a significant chunk of time with friends, such as face-to-face through Discord and the like.

2021: The Year That Will Be

Of course, one of the greatest things about the Theme System is that it is specifically intended to be adaptable: general categories and ideas that have some specific ideal outcomes, with a goal of simply having a wonderful Christmas time 🎵 positive (or at least, non-negative) trend toward achieving those. This also means that it will change over time, and I suspect these themes (or their goals) will be more seasonal than yearly. But in either case, 2021 is looking to be very much an upward swing on all of these goals, so I will take a page from the Borg and simply adapt where needed.

Hopefully this brief explanation helps clarify for some how and why I love this Theme System Journal so much, and perhaps encourage others to do use it more also.

Happy Holidays, everyone! 🙂

On Election Night 2020

November 3rd, 2020 No comments

I posted something similar to this on a friend’s Facebook wall in response to a suggestion that it’s ok to still be friends even if we vote differently.

Let me perfectly clear: It is absolutely not. Nope. Not this time. Not anymore.

This election isn’t just about policy or Trump/Pence vs. Biden/Harris. It’s fundamentally more than that: a vote for continuing Republican control of government is a vote for everything that they stand for: the corruption, lies and deceit, the anti-science rhetoric (which so far has cost the lives of nearly 230 thousand Americans), and behavior from the highest powers in government that exemplifies and epitomizes all of the bad -isms: racism, sexism, you name it — the list goes on.

This election is not about policy or lawmaking. This election is about how we the voting public determine what it means to be a decent person in a rational, civilized society.

Does that mean you want to promote intolerance and oppression of others just because they are different from you? Does it mean that you want to destroy the health and well-being of your community simply to fill some coffers a little higher, even when you probably won’t ever see a single cent of that? If so, then vote Republican.

Or does that mean that you want to work to more precisely identify and start resolving all the systemic problems in our government and law enforcement, and actually listen to the advice of reputable experts and scientists on how to deal with various socioeconomic and (especially now) medical issues? Does that mean you want to keep the rule of law as a core backbone of our society instead of letting it be pulverized by Republican cheats? If so, then vote Democratic.

No, I don’t particularly like Biden or Harris. But I still voted for them. Yes, I hate that our two-party system effectively forces us to make such a choice instead of electing much more qualified third-party candidates. But in order to fix the broken system we have to work within its constraints, at least for now. And of our two viable options, they (Biden/Harris) are infinitely more qualified and deserving of the offices than the incumbent Trump/Pence. Similarly to all congressional offices: Democratic is the only reasonable choice.

In my opinion, if you vote Republican or third-party at this point, especially after seeing the devastation wrought by the GOP in the last 4 years (and unfortunately, much more to likely come thanks to the recent Supreme Court confirmation of Barrett), then we fundamentally disagree on what it means to be a decent person in a rational, civilized society; and the difference is no longer one of sociopolitical opinion, but one of different objective worldviews. And that is a difference that is irreconcilable. If that is the case for you, then know that I no longer wish to interact with you or associate with you in any way.

As is oft being shared: You can’t tell someone you love them, and then vote for someone who will hurt them.

That said, please get out there and vote safely if you have not already done so. Vote Blue like your life depends on it: if not yours directly, I can guarantee you that is 100% the case for at least one other person that you care about.

On Technological Addiction: Active Noise Cancellation

July 5th, 2020 2 comments

From a certain perspective, humanity has largely already become cyborgs: not only do we augment our flawed biological senses with corrective technological ones — for example, eyeglasses, hearing aids, pacemakers, and so on — but we also constantly carry with us so-called “smart” devices like watches, phones, and tablets, that allow us to easily stay connected to others and instantly access the entire breadth of human knowledge at our fingertips. In a way, these “smart” devices have become somewhat of an external secondary brain of sorts. (Reminiscent of the Ood of Doctor Who lore, though in a less drastic way.)

It’s easy to argue that we can, and have, become addicted to these technologies for our daily lives. For some — like corrective eyeglasses, hearing aids, and pacemakers — the addiction is clear: without constant use of these technologies, day-to-day life would be very difficult or perhaps impossible. But the addiction to phones and tablets and the rest is not always as visible, nor are the withdrawal effects from prolonged non-use of them. Moreover, there are other gadgets we use regularly whose addictive effects are not so obvious at all. For example, consider ANC (active noise cancellation).

I was working on a “1 Year Later”-style review draft of my Bose Noise-Cancelling Headphone 700 when I came upon an interesting conclusion: I find myself extremely more sensitive to background noise now than I ever used to be.

For instance, a few years ago, I wouldn’t have been bothered by the fireworks, sometimes loud music, and general noises of my neighborhood on a celebratory night like tonight. These were just things I lived with, simply as facts of life. Same with the hum of my refrigerator or the repetitive spinning noise of my bedroom’s fan: These were not sounds that were extraordinarily annoying; they simply existed near me as unremarkable background.

But now, after wearing Bose noise-cancelling headphones for nearly several hours daily for the better part of three years, I find that I am incredibly sensitive to these noises, to the point where it often gives me a headache to let them remain heard for any extended periods of time.

Being able to quite literally switch off the world around me and choose not to hear all of these disruptions has been an amazing boon to my work, hobby projects, and games, and lets me relax so much more deeply when listening to podcasts while doing chores and whatnot. (Truthfully, I probably would have been a more diligent and productive student in college if I had these. But it would also have meant an entire week’s pay at that time…)

And now, I find that when I’m not wearing my Bose headphones, that same background noise of my neighborhood — when it happens — is extremely irksome and makes it difficult sometimes even to hear my own thoughts. It has come to such an extreme at times that in the pre-pandemic era, I would carry my Bose headphones with me to family gatherings and such because I knew just the intensity of so many conversations ongoing could be too raucous for me, and I would need to step away for a few minutes of silence.

I suppose in retrospect this conclusion should have been an obvious one, especially for a transhumanist like myself: Of course, my brain has probably adapted to that near-silence as a new “default” background noise level. In short, I’ve developed an addiction to the technology of ANC; and in the same vane, I experience a sort of technological withdrawal by not using it.

Does anyone else that regularly uses noise-cancelling/isolating headphones find themselves similarly addicted to their benefit?

An Open Letter to Costco: Please Fix Your Password Handling

June 9th, 2020 3 comments

(Editor’s note: This originally happened in early March, just before the ongoing COVID-19 pandemic lockdown began in earnest.)

To whom it may concern at Costco: The process for connecting one’s membership card to their online Costco.com account through your official mobile app is nothing short of an overwhelmingly under-engineered mess: a combination of unintuitive workflow, security practices which serve only to epitomize mediocrity, and business logic decisions that, frankly, are so obviously wrong that they should probably be outlawed.

Okay maybe I’m exaggerating and getting a little ahead of myself here. Let’s begin this once more without the vitriol:

Dear Costco,

We need to talk.

I’ve been a long-time member and nearly-weekly customer of your local warehouse for many years; and I recently made the mistake of losing my membership card. It should have been in my wallet, but it was not. The specifics of my idiocy are not relevant here: suffice it to say, I no longer had my physical card. I was unaware of this until last weekend when I arrived at my local Costco warehouse for my weekly grocery run and found that slot in my wallet to be bare.

“That’s no problem,” I thought. “I have all my membership details stored in my 1Password and can easily just get a replacement card at the membership counter. No big deal.”

This is where the an attentive audience might have heard the record scratch, and a narrator say: “It was a very big deal.”

Upon reaching the customer service desk, the representative was very polite and asked me to provide my photo ID so that she could give me a replacement. Unfortunately for me, my license expired last month and even though I successfully renewed it, its slot in my wallet was filled only by a temporary paper license from the DMV until I earlier today received the new permanent one in my mail. Without that photo identification, I could get only a temporary paper card that would allow me access to the warehouse, but then I would only be allowed to pay in cash.

…Cash? …In 2020? Are you actually serious?

To be fair, I do carry a small amount amount of cash on me for emergencies; but as this is my usual weekly bulk grocery run, I can assure you that this small cash cache would have been woefully insufficient for what I was going to buy. And I am not going to the ATM just for groceries. (Again, it’s 2020 after all.)

With a spark of insight, I realized, “That’s no problem. I can just add my card to their official mobile app and use the card that way.” Once again, the record scratch and narrator here are all but audible.

Adding the card to the official app seemed to be fairly easy: Once I had input my membership number and some identifying information — ZIP code and name and such — I was shown a notice that told me something along the lines of: “You need to visit a Costco warehouse to complete the verification in-person.” (I apologise here; I forget the exact text. Had I known at the time what I know now about this process, I would have been more diligent about taking screenshots and whatnot.) This seems reasonable: You want to ensure that the person adding that account is actually a member on that specific account. I understand.

I walked back to the customer service desk and requested the noted verification. The representative there took down my email address and said to follow the instructions in the email to confirm my account. Again, something that seemed, at the time, quite reasonable.

A couple of minutes later, I checked my email and instantly realized that this was to be the last reasonable part of my afternoon: The email I received had a link to complete my account setup and the following information text:

If you have an existing Costco.com account, you will need to create a new password. This will verify your membership number and link it to your Costco.com account.

This is utterly ridiculous. I asked the representative why I need to change my password to confirm my email address, and although she was very polite about it, she simply told me she wasn’t sure, but recommended changing the password by simply changing the last character of my current password to something else, like an @ symbol or some such.

First of all, this necessity to change password is a severe flaw in your design. I should not need to change my account password just to verify my email address. There are many good and obvious correct solutions to this problem; and any software engineer with basic experience in this area would suggest one of them here. For example, one possible user-friendly way to do this would be to have the user log in (if not already) and then input some secret single-use passcode that is sent to their email (like a one-time password or random alphanumeric token that they could copy/paste or some such). This could be made even easier by by having the email contain a login link with that code as a query parameter: it would require only one click from the user!

Please note that this is the way almost every major website that handles accounts does email verification: no password change required. Why? Because forcing users to go through yet another hurdle in your software means you will have fewer users. The math is quite simple: The less difficult you make your software to use, the more that people will use it.

Secondly, the entire purpose of me going in-person to this customer service representative was (presumably) so that she could put in my email address and membership number into their computer so that their automated system could send me the email for password reset. This is yet another piece of your workflow that is incomprehensibly flawed: I should not need to verify my email address in-person. I know this is the case because once she had the email sent, I was able to do everything else through my phone with zero other human interaction.

I’m already logged in to my Costco account, and that is keyed by my email address. Just like in the method I described above, Costco should be able to easily verify my email address by sending me some unique code or token that I can enter in a form or via some special URL.

Costco, you should not need to have me verify my email offline. It’s yet another hurdle in your software that I have to jump over, just to use what should be one of its most basic features.

Thirdly, forcing password changes like this serves only to promote insecurity. Not only does this make users more prone to using weak passwords to begin with, but it also encourages them to change passwords in a way that is very predictable — and hence, insecure. See Lorrie Cranor’s FTC blog post for a lot more details and linked studies. Her particular post deals more so with password expiration policies than single-instance forced password resets, but the crux is the same: Forcing a password reset when there is no good reason to do so inherently promotes insecure passwords.

With a heavy sigh, I figured I had no choice and so created a new password entry in my 1Password and set about to change the password so as to confirm the account. Lo and behold, I could not use 1Password’s auto-fill functionality to put in the generated random password. This is a bit frustrating, to be sure, but not every text input in Android yet supports this. And frustrating as it may be, clipboard is always an option. So that lack of auto-fill was almost never a showstopper… until now.

Not only could I not auto-fill the password, but Costco’s official mobile app and their website both prohibit copy/paste functionality in the “New Password” fields. For someone who tries to be reasonably secure online, this is a usability nightmare. By denying the ability to use both paste and auto-fill functionality, Costco, you are adding yet another hurdle to your software, this time in the form of a terrible dilemma: do your users trade away security for ease of use? Of course they should not have to. Being both easy-to-use and secure is the raison d’être for credential-management tools like 1Password to exist at all. NIST themselves even specifically recommend pasting from password managers:

Verifiers SHOULD permit claimants to use “paste” functionality when entering a memorized secret. This facilitates the use of password managers, which are widely used and in many cases increase the likelihood that users will choose stronger memorized secrets.

“Digital Identity Guidelines: Authentication and Lifecycle Management” (NIST Special Publication 800-63B) by Paul A. Grassi, et al. DOI: 10.6028/NIST.SP.800-63b

Okay, okay, so it’s not all bad, right? Just change my password and continue on? It’s only a one-time thing, after all. If only it were that simple. After creating a new random password and spending a solid three minutes meticulously typing it in twice to double-check it, I clicked “Update” so save the new password…only to see an error page appear and be prompted for a new password once more:

Password must include the following:
• Use between 8 and 20 characters
• Include at least one letter
• Does not contain blank spaces or the following special characters: < > ” \ . ,

This is yet one more hurdle your users have to jump over just to get basic functionality out of your software: in order to get through this quickly, most users will simply choose easily remembered (and therefore, easily guessed) passwords that meet the bare minimum of these guidelines. Moreover, by restricting the length and character possibilities of the password options, you are limiting the complexity of it. Once again, the math is straightforward: the longer and more complex the password, the more secure it is. The math here is once more nearly self-evident: the greater the entropy — that is, overall complexity — of the password, the greater the difficulty in guessing it through brute-force, dictionary attacks, or other means.

Thankfully 1Password has a “memorable password” option, so instead of a random character string which would be difficult to input from memory, I could create a password that’s a sequence of words and numbers (e.g., “Correct1Horse2Battery3Staple4“) which made it slightly less irritating to remember and type in, but my fourth point remains: Password restrictions promote insecure passwords. In fact, Jeff Atwood of Coding Horror summed it up quite nicely in four words: Password Rules Are Bullshit.

So in closing: Costco, please fix your password-handling and account-verification user experience flows. These are at least 4 flaws I found in barely one hour of using your app; and I can only imagine what other usability or security obstacles I could probably find with more time and effort. These flaws are ones not of code, but of architecture.

It’s perfectly fine — we all make our share of mistakes! But mistakes are made to be learned from, not repeated and left unchecked. If left as-is, these are and will be harmful to your customers from both perspectives of usability and security — two considerations that while seemingly disparate, should always go hand-in-hand. Not only does it promote insecure password usage, but in making your workflow actively hostile to the user, you are pushing away potential users and discouraging people from using the app at all.

Please fix these. Your users will thank you, because it will be easier and less counter-intuitive. Your IT staff will thank you, because it will be more secure. Your customer service staff will thank you, because they will not need to deal with as many account reset and usability issues.

And of course, I will thank you, because you will have acted positively on constructive criticism to enhance my experience with your software.

Here We Are. #BlackLivesMatter

June 2nd, 2020 No comments

I speak to you, the chosen ones.
With all our strength, we stand aligned.
[…]
We’re breaking the walls from inside…
…so rise to the sound of Revolution.

Excerpt from “Revolution” by Kamelot, from their album “Haven” (2015).

I’ve been pondering what to say that hasn’t already been said about all the series of unfortunate events that seems to be the trend in the United States. I have neither the courage nor the logistics to be part of the protests in person; but staying quiet about them feels like tacit approval of the very system they are protesting against. And this, at least, I cannot do.

However, it is difficult to know exactly what to write here. I want to help, but I don’t want to mistakenly “help” in the wrong way: I want to incite change, not just more anger. I want to promote equality and education, not violence and vitriol.

These recent events are merely the culmination of many decades of injustice and intolerance; and the ideal solution would be change in the underlying systems which allow these to continue so pervasively. But in addition to these systemic failures of justice, there are lot of other aspects of our leadership structure and personnel that are detrimental also; and I’d like to mention those in this post too. I contend that no one issue here is more important than the other. Rather, all are individually important for their own reasons; and I am remarking on them grouped together here only for the sake of attempting to express my thoughts more completely.

In the year 2020, we have at the forefront of sociopolitical power in our country and many others, people with very little competency and nearly as little accountability. And they are more often than not kept in their high offices by corporations and lobbyists who can effectively win any election just by throwing enough money at it, rather than by any merits of candidacy. Third-party candidates almost never succeed — even if they are exceedingly qualified and capable — solely because they are of a third party.

In the year 2020, during a global viral pandemic, we have a significant number of people who, despite such claims being thoroughly debunked by every reputable medical organization, are advocating against the safety and efficacy of vaccination, even though a SARS-CoV-2 vaccine would be — once properly developed — the only truly safe and effective way to return to some semblance of normalcy.

In the year 2020, when science has graced us with the capabilities of astronauts being able to live and research on the International Space Station long-term, collaborating between many nations to further humanity’s knowledge, and when we can video chat in real-time between these astronauts in orbit and people on both sides of the the planet simultaneously using pocket-sized always-connected devices that can also quite literally show us the breadth of all human knowledge…we have groups of people accepting outlandish conspiracy theories and protesting against the very existence of COVID-19, saying things like the world is flat, manmade climate change is not real, and that COVID-19 is somehow a hoax so that the governments can track their citizens better. (Of course it should not need to be said, but none of these are true. And, fun fact: if they wanted to track their citizens better, it would be far easier to do so using the always-on always-connected mobile phones that almost everyone has on their persons at all times. But hey, who am I to argue logic with those who refuse its clarity.)

In the year 2020, almost a century after the Civil Rights movement first began in earnest, there are still people who think that it is somehow okay to devalue other human beings simply because they are different: whether that is a difference of skin color, gender, or sexual orientation, or because they are of a different socioeconomic group, or because they are of a different culture or race, or for any other aspect of them that differs from a prescribed societal norm. (To be clear: this is absolutely not okay.)

And more recently in the year 2020, echoing many prior instances such as the killings of Ahmaud Arbery and Breonna Taylor and many others, we have police officers who, despite having sworn an oath “to never betray […] the public trust” and “to hold [themself] and others accountable for [their] actions” (source: IACP Oath of Honor), abuse their power to epitomize this intolerance through clear excessive force leading to outright murder — in this most recent case, the murder of George Floyd — and are often not held justly accountable for it.

And just a few days ago, after the United States alone reached over 100,000 confirmed deaths from COVID-19 and still has almost 2 million confirmed infected (source: CDC), we had the chief executive officer of the United States announce that our country would be leaving the World Health Organization, in order to continue his racist trend of blaming China for this disease. (Fun fact: China itself holds about 19% of the world’s entire population. So, yes, it is going to be a significant focus for pandemic efforts, on the simple basis that it holds such a large proportion of the world population. That’s just how epidemiology works.)

Let me be perfectly clear: None of this is acceptable.

Respect should be the default in our interactions with other people, not some reward earned through commonality of class or culture. Respect should never have to be earned. It should always be given.

And yet, here we are.

We should not be so entrenched in a political system that so readily divides issues across bipartisan lines. Parties should be debating what the correct solutions are to our socioeconomic and welfare problems, not debating whether these problems even exist at all. We should not have to vote for the lesser of two evils simply because the qualified third candidate won’t win.

And yet, here we are.

We should not, in the midst of a viral pandemic, be separating ourselves from the primary worldwide organization whose current overarching goal is to end this pandemic with a minimum of life loss.

And yet, here we are.

We should not have groups of people afraid to simply live out their lives, due to the high likelihood of being attacked by those in power who should be protecting them, just because they look or act differently.

And yet, here we are.

#BlackLivesMatter should not need to be a hashtag.

And yet, here we are.

People should not need to be protesting in the midst of a viral pandemic, that their lives are in danger from the very people who should be protecting them, by endangering their own lives even further as part of a (hopefully peaceful) crowd.

And yet, here we are.

We should not have our police officers armed to the teeth and attacking the very people they are sworn to protect, while our medical personnel are struggling to make ends meet with not enough PPE and ventilator equipment to help keep people alive through this global pandemic.

And yet, here we are.

We should not have such intolerance so hardwired into the justice and political systems that even the people who hold arguably some of the highest offices in the world are willfully ignorant and continue to encourage prejudice over progress, and wealth over well-being.

And yet. Here. We. Are.

To you protesters, please stay safe. Stay vigilant. Stay peaceful. You are bold; you are brave; and I stand with you, albeit virtually.

In Memoriam: Developer Shed Forums

June 30th, 2019 No comments

In late-2003, I was a high school junior loving every second of my AP Computer Science AB course. While researching something for homework one day, I found a neat little forum on the internet called Developer Shed where people helped each other to solve programming problems, talk about algorithms and problem-solving strategies, and generally just chew the proverbial fat in a mostly-friendly setting.

I was a fledgling hobbyist LAMP developer at the time — hey, it was a phase — and I enjoyed helping others through simple problems such as fixing logic issues, rudimentary database usage, and the like. In so doing, I found (as any novice programmer probably would) that by working through those problems, I was learning more about programming: both PHP and SQL specifically, but also generalities of debugging techniques, and how to think through problems more methodically. Yes, we had a lot of hands-on projects for the AP Comp Sci AB coursework; but this was yet another outlet for my code creativity. And more practice meant more programming perfection. I soon became an avid member there, averaging an hour or two and multiple posts daily for what would be the next several years.

The following April (2004), after a few months of posting, I was nominated into a moderator position for some of the forum sections that I actively visited — such as PHP Development and the Dev Shed Lounge (the off-topic forum). I eagerly accepted, of course. Being an active community moderator enabled me to directly act against many of the personae non gratae including trolls, spammers, and belligerent users; while also promoting the beneficial posts of more well-reputable users, and working with the rest of the moderation team to write needed FAQs and other such guidelines to keep the forums running smoothly.

In fact, it was this initial foray into community moderation that gave me the confidence I needed to properly fulfill my duties once I became a moderator of the Gentoo Linux forums the following December — a role I held for the nearly two years that I was an active Gentoo user.

My activity on the Dev Shed forums declined rapidly once the combination of full-time college, work, and extracurriculars started consuming most of my available time; but I still checked in on weekends and such for many years. Ownership of the forums changed hands a few times with no apparent significant impact; and my semi-regularity continued until about 5 years ago (?), when the original owner of Dev Shed sold it to Jim Boykin, CEO of Internet Marketing Ninjas.

With their new administrator team running the forums, many of the outstanding problems were resolved — such as creating more responsive templates — and we had very polite and quick feedback to ensure that the forums continued to run smoothly for a long while. They were incredibly supportive of our community, and especially of the moderator team whose efforts kept it running day-to-day. We even got a nice gift box from them that holiday season which included some t-shirts (two of which I still often wear to this day), a signed team photo, and an Amazon gift card. Cool!

Because of their responsiveness and general benevolence, I found myself on the forums a lot more over the past few years: not posting as frequently so much as just helping maintain everything: removing spam posts, banning troll users, etc. However, even this became an extremely-infrequent occurrence in recent months because my time would be so often better spent elsewhere: Dev Shed was pretty much the only decent programming-focused community back when I first signed up those many years ago; but that has long since been superseded by communities like first like OSnews and Slashdot, now Reddit and others.

And so, I found myself perusing Dev Shed maybe once or twice per month — a far cry from the near-daily I had formerly been. Because of my inactivity, I had been pondering retiring my moderator status for the past year or so; but something kept pulling me back. On one hand, it felt a bit unfair that I should stay a moderator for a community that I wasn’t as much directly a part of anymore; but on the other, I couldn’t just suddenly stop being such a significant part of this developer community that had itself been a significant part of my online life for over a decade.

So I persisted, and kept checking in very infrequently to keep up with site news, moderation queues, and some Lounge chat. But I never returned to posting much in any of the programming-specific forums. I just didn’t have the time or patience that I once had to write those would-be responses with the necessary due diligence.

Then, in late 2018, tragedy befell our once-thriving community. For whatever reason, the forums stopped being actively maintained: the administrators became far less responsive in fixing issues; many of our moderation team were online much less frequently, and people were generally not posting as much on the forums anymore. Rumor had it among some of the then-moderators that the administrative team was trying to rewrite a lot of the database and vBulletin backend stuff from scratch because the original owners had implemented a lot of fancy things as layers of kludges — a software house of cards, so to speak. But it seems that was never quite accomplished.

…Which brings us to the present. This past week, the entireties of SEOChat and Dev Shed forums were effectively scrapped after months of effort by Brett Tabke (from Webmaster World, also owned by Internet Marketing Ninjas) to try to modernize them; but unfortunately there were simply too many flaws in the old systems to reasonably fix. I do wish Tabke could have kept the old archive of posts if for no other reason than as historical reference; but I very much appreciate their months of effort to keep that archive, as futile as they seem to have been.

And so it is with a simple goodbye that I leave my Dev Shed past behind. That said, I cannot bid it adieu without mentioning several of the users there whom I befriended during my time as a moderator, and who helped make my stay in that community a pleasant one. I know that I am certainly forgetting many so I apologise that this list must necessarily be incomplete, but the handful that first spring to mind are:

  • SimonGreenill
  • ChiefWiggums1982
  • Sepodati
  • Scorpions4ever
  • B-Con
  • Nilpo

Perhaps our paths online will cross again; but until then, goodbye… Hmm, it seems odd that a short “goodbye” should suffice for something that was a part of my online life for such a long time (15+ years); but so be it.

So long, Dev Shed, and thanks for all the fish.

(Also, yes I will try to post more here; apologies for the long bout of inactivity.)

Ingress: On Gameplay Goals And The Inefficacy Of Pineapples

January 28th, 2016 No comments

For those who might not know, I am an avid Ingress player. It is a fun augmented-reality game, which is to say that it overlays the map of the game onto that of the physical world; so in order to interact with items and points of significance in the game, you must be near them in the real world.

To make a long story short, the game has two teams, or factions, called the Resistance (blue) and Enlightened (green), for story reasons. The goal of the game is to capture and hold control points, called “portals,” and link them together to form triangular areas called “control fields”: areas surrounded by your faction’s portal links. Larger and more numerous fields give the faction more total points (in game terminology, “mind units”, or simply “MUs”). These are what determine your faction’s score, if they are still standing, at the end at the end of that cycle checkpoint (each 5-hour period of time when the servers tally the MU scores of each faction) . Players, called “agents”, use a variety of items that they acquire from portals by “hacking” them, to capture portals and upgrade them. Among these items are bursters (weapons used to attack enemy portals), resonators (which empower the portals and align them an agent’s faction), so-called “flip cards” (JARVIS viruses and ADA refactors, which forcibly convert a portal to be aligned to the Enlightenment or Resistance factions, respectively), and enhancements (called “mods”) to the portal itself, such as defensive ones like shields (which reduce some damage from enemy attacks), or utility ones like heat sinks and multi-hacks (which allow agents to hack gear from the portal more often) and link amps (which increase the maximum link range of the portal).

I had a provocation earlier tonight with some would-be allies which inspired this post, in that I had destroyed, captured, and created fields from so-called “pineapples” that they set up. It’s only recently that I’ve come to learn about this tactic (so named because they resemble the fruit in appearance); but in essence, one can capture an enemy portal, deploy all 8 low-level resonators onto it as close to its center as possible, fill its mod slots with otherwise useless things (like regular link amps), then use a flip card to transfer control of it back to the opposition. The goal of such a tactic is straightforward: resource denial. What could have been a reasonably well-defended portal is at any point later easy to destroy (since it has no defensive mods, and the resonators are all packed so close together). Furthermore, since it is low-level, it does not provide much useful gear. In theory, it forces the enemy to use their own flip card (which are rare) and destroy it before recapturing themselves, thereby expending weaponry and their own resources and time. While this may have been a viable tactic when the game first began many years ago, it no longer is. It is said in this game that the best defense is a good offense, and such a flawed tactic demonstrates this by failing to take into account five important aspects of gameplay.

First, portals provide equipment to both factions, and so forcibly keeping a portal at a low level serves only to reduce the total gear available in the game from that portal, thereby reducing item opportunity for nearby agents in both factions. And even when flipped, enemy agents can still upgrade all of the resonators, thereby producing a high-level portal from which any agent can then acquire good equipment. Admittedly, the portal will not be as farm-friendly without these hack mods to acquire items more often from it; but this detriment in farm is in fact a detriment to the farm of both factions.

Second, since the portal has all its resonator slots filled, it can still be used to create links and fields (albeit weakened ones), which add to the key scoring metric used in determining the victor at each 5-hour checkpoint.

Third, items which used to be very rare in game, including flip cards, are now much more commonplace thanks to the existence of MUFG capsules (which gradually duplicate their contents). Because of their steady duplication of items, the introduction of MUFG capsules is arguably the most significant change to the game in its entire history, even moreso than flip cards or ultra strikes. In fact, I have two of these so-called “muffins” full of flip cards, giving me one or two free JARVISes and a handful of free ADAs every day. Forcing an enemy to expend what are now reasonably commonplace items in order to destroy and recapture their portals is inherently counterproductive, as doing so gives the enemy faction AP and badge credits (two other scoring metrics in the game, used to increase agent levels).

Fourth, it fails to account for the existence of ultra strikes (high power weapons with a very small blast radius). Once flipped, pineapples by their design are almost stupidly easy to destroy with a few well-placed ultra strike blasts. And because the resonators are all very low level, this will work even through the mitigation of any shields that might have been installed. Again, all that this accomplishes is a bit of AP and badge credit gain for both sides.

Lastly, the goal of pineapples is usually to deny an enemy gear, and so it is done in small portal clusters that are known to be often enemy-controlled and used for farming (with mods like multi-hacks and heat sinks, which allow equipment to be gained from these portals more often). But one of the strongest defenses a farm has is specifically the fact that it is clustered: any portal whose resonators are attacked is likely to counterattack the offending agent, so by spacing resonators in the farm widely, any enemy agent that attacks them is likely to hit multiple portals and therefore be counterattacked just as widely. On the other hand, pineapples, once flipped, are easy to destroy with weaker low-range weapons (or, a few well-placed ultra strikes as noted above) rather than the more powerful but larger-range ones, thus reducing the total counterattacks done to that enemy agent. It is therefore more detrimental to the enemy agents to fully capture and deploy on their farm, and put on attack mods like turrets and force amps (which make the portals’ counterattacks happen more often and make them more powerful). And again, these can simply be flipped just as easily; and if an enemy did, he or she would not be able to replace these attack mods with hack ones, being just as counterproductive to their farm as pineapples were perhaps intended.

But all this is simply an aside: pineapples are not a viable long-term tactic in Ingress; and the only purpose they serve is to waste the time and resources of both factions, one in creating the pineapple, and the other in destroying it to claim it properly. The true issue that provoked this post was that in capturing and fielding from the pineapples that I mentioned earlier, I had teammates remarking to me in chat a few moments after the fact that they had “made those portals […] fucked up and ada’d [sic] for a reason.” That’s all well and good perhaps, but the entire purpose of the game is to capture, link, and create control fields from portals. This is exactly what I did between these 5 portals in question. And in doing so, I was reprimanded by members of my own faction for simply playing the game as it was intended. These agents even went so far as to accuse me of somehow being a double-agent, playing for the Resistance’s benefit. That crossed the line of being sensible discussion of tactics to one of inflammatory and blatantly false accusations, and it was that at that point that I stopped responding to any of the three agents involved. Tactical disagreements happen, sure; but I will not be unjustly accused of being something I’m not.

Because, after all, it’s just a game; and I’m not going to let myself stop enjoying something that for almost two years has forced me to get more exercise and visit more of my city, all because three ignorant agents from my own faction apparently don’t want me earning points toward our faction’s victory.

And if any of those three are reading this post, please take note of the following: Should you decide to continue making pineapples in those spots which have become part of my daily walking path between classes, I intend to keep upgrading them and making fields from them just as often. Whether or not I capture them first is dependent only on whether or not they are blue at that time. I do this not out of spite or malice; but rather as a way to earn points for myself and the Enlightened faction (which is, again, the entire purpose of the game).

Categories: Ingress, Technology, Uncategorized Tags:

Obituary: CurvyLooks

June 16th, 2015 No comments

Just over a decade ago, I took the reigns on a Fedora package called gnome-theme-clearlooks-bigpack. Among other niceties, it had many color themes and Cairo-enabled widgets for the Clearlooks (now Adwaita) GTK+ theme engine. But there was one and only one reason I took it: The Cairo_Curve theme.

This theme was a very smooth and rounded (thank you, Cairo rendering) but otherwise faithful reproduction of the Bluecurve color scheme and design philosophy (whether written or not) of just being simple and easy on the eyes for long periods of time. As you can imagine, this is great for people like myself who are using their systems for many hours at a time every day. As someone who used it on a daily basis, when it was orphaned I could not simply let it go unmanaged.

Time went on, as it so quickly does, and in mid-2007 I found myself a bit despondent: the upstream maintainers had all but vanished. What sources I had, I immediately mirrored onto my personal webspace; and I changed those in the RPM .spec file to match. I realized that if I cared about it enough, I should become the upstream contact myself.

And that is exactly what I did. That November, I ripped away every theme except for Cairo_Curve, as that was the only one I had any interest in, and formed the CurvyLooks project: A modest attempt to keep the Bluecurve-like color scheme and theme design for Clearlooks and essentially forward-port it to future versions of GTK+ as necessary.

Time again went on, however, and the chaos of life caught up with me. Newer GTK+ versions caused a few minor bugs (warnings about unused or invalid portions of the gtkrc file, for instance); but since it still more or less worked, I did little to fix them.

And time continued on. It was now July of 2011, and GTK+ 3.0 had just been released. I had already a release candidate of CurvyLooks that “worked” (though not well) together with the series of GTK+ 3 release candidates; but the distinction between “functioning” and “working well” can be a large one, as it was here. I fixed what I could of the theme drawing issues (such as opaque tooltips) and updated it to work with GTK+ 3 and the then-new Adwaita engine (which superseded Clearlooks). I released this as as CurvyLooks 0.4 RC2; and there it has stayed for nearly four years.

Except I also did something else. I also disabled the Dark theme, as I had become so accustomed to the idea of a bright background and dark text/foreground that it simply made no sense to me. In particular, some programs would use the Dark theme if it was installed, while others stayed with the “normal” variant; and that mismatch was rather frustrating.

A few short months later, I happily installed the Fedora 17 Beta and was thrilled with what I saw. In fact, the default Adwaita theme was almost exactly what I imagined CurvyLooks should be. I kept using that default but there was something…some je ne sais quoi about that Adwaita theme that broke my “easy on the eyes” rule. I couldn’t tell if it was that the contrast was too high or that the colors were not saturated enough or something else entirely but it just didn’t feel right. So I forced myself to try the dark theme. And I liked it.

No, scratch that. I loved it. Having long since grown accustomed to the light-on-dark theme on my Android phone, my UI tastes had changed rather drastically. To quote Morpheus from The Matrix: “Fate, it seems, is not without a sense of irony.” I enabled the forced global dark theme and time went on once more…

It was now July of 2012. GTK+ uses Adwaita as its default and the theme is bundled as a gresource tarball file within the engine itself. Hoping to update CurvyLooks, I started by writing a simple gresource extraction script to unpack those files so that I could base my new CurvyLooks version on a recoloration of that theme. But having no need for the theme itself anymore, as a user of the Dark Adwaita theme, I simply did not have the patience to work through how to implement it for this new format of theme packaging. I focused my time and efforts elsewhere, in Fedora and in real life. Thus time slipped into the present…

I suppose this end is long overdue; but such is one of the great lessons about flexibility and power of Free software: Just because the original maintainers disappeared, as long as I was willing to put in the effort, I could keep the project running myself. While my contributions to it were small at best, it was fun, in its own little way, to go through the process of setting up and publishing my own work. But it was just “working” and rarely “working well;” and I could no longer give it the due diligence to make it as awesome as it once was.

It’s only fitting that I should let time slip, once and for all, into the future; but without CurvyLooks advancing with alongside it…(Unless, of course, someone else wants to repeat this upstream initiative and maintain it themselves!)

LaTeX: Adding Your Own Paired Delimiters

October 5th, 2012 1 comment

I’ve come to use LaTeX extensively for typesetting my Mathematics homework. It just makes things so beautiful. And like the XHTML/CSS split, it really does encourage strong separation of content from presentation. One of the things I first hated about it though, is that I grew quickly tired of using \left and \right with brackets, parentheses, or anything that needed to be automatically be sized to its content.

And, as any good engineering student might, I sought to encourage my own laziness by finding a clever shortcut. After a few minutes of searching Google, I came across the DeclarePairedDelimiter command in the mathtools package. Its usage is fairly self-explanatory, as I’ll let the following demonstrate.

First, you need to load the mathtools package in your document header:

\usepackage{mathtools}

Then you can create your own paired delimiters with the DeclarePairedDelimiter command:

\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
\DeclarePairedDelimiter{\innerproduct}{\langle}{\rangle}

Finally, you can use these new commands in math mode to more easily group your expression. (Append an asterisk to make LaTeX automatically insert the necessary \left and \right commands when you need the delimiters to resize according to their content.)

If \(a \lt 0\) and \(b \gt 0\), then \(\abs{a} = -a\),
and so \(\abs*{\frac{a}{b}} = -\frac{a}{b}\).
The norm of a vector \(v\), denoted \(\norm{v}\), is
defined by \(\norm{v} = \sqrt{\innerproduct{v,v}}\).

As a nice bonus, it increases readability of the LaTeX source tremendously, since it gives those grouped expressions some semantic name rather than just being a bunch of formatting. For instance with the above delimiters, \left\lvert \frac{a}{b} \right\rvert is more to type, and a lot less obviously an absolute value, than the simpler \abs*{\frac{a}{b}}.

Happy hacking!

Categories: Science, Technology Tags: , ,

CurvyLooks 0.4 RC1: Almost GNOME 3-ready!

April 10th, 2011 No comments

After over three years, CurvyLooks has an update! Yes, folks – this time it’s for GNOME 3 support….well, almost. It is based heavily on the Adwaita GNOME theme (in fact, simply copied verbatim in many parts). Unfortunately, I’ve not been able to adequately set the menu item and notebook-tag coloring, so those parts still look a little bit ugly. I’ve been trying to tweak the Adwaita theme on a trial-and-error basis to see how to do this, to no avail. Contributions welcomed! 😉
Also, I need to post more often on here…this I have decided.

Slight E-Mail Hiccup

March 1st, 2010 No comments

Having grown more than a little bit tired of how slow Evolution is at filtering emails, I decided to try the new Thunderbird. (I say “new” because I have not used it since it was version 1.5-ish.)

Unfortunately, I accidentally decided to have them both open at the same time – my understanding being that IMAP is okay with multiple simultaneous connections. Apparently this is not the case between Thunderbird and Evolution, as I quickly discovered. Something clashed with something else somewhere along the code, and now much to my dismay my Inbox is empty. (Oops.)

Long story short, if you sent me an email since Saturday morning (which was the last time I thuroughly checked my email) that you need me to read and/or respond to, please resend it.  Thanks.

ThinkPad T500: Initial Fedora Report – Marvelous!

September 14th, 2009 3 comments

Well, after receiving my ThinkPad T500, I set about tweaking the pre-installed Windows Vista, and spent most of the weekend attempting to get it dual-booting Vista and Fedora nicely. For better or worse, neither Fedora’s GRUB nor Windows’ BCD bootloader would accept booting the other OS properly. I came to realize that I hadn’t used or needed to use Windows in over 5 years (even the server at work is CentOS), so It’s highly unlikely that I will need it in the foreseeable future. Just in case though, I can always run it in a VM. So, after burning the Product Recovery Discs, I wiped it all and installed Fedora on this wonderful machine. 🙂

I configured it with 4 partitions:

  1. /boot (about 500 MB)
  2. Swap (about 5 GB)
  3. / (FS root, about 35 GB)
  4. /home (the remaining ~210 GB)

As far as the hardware goes, everything appears to work out of the (quite literal) box. The processor’s throttling is automatically handled by cpuspeed and ACPI. The LCD was automatically detected at the appropriate resolution (WSXGA+, 1680×1050) and DPI (129), and graphics (integrated Intel GMA X4500HD) work very well – 3D, Compiz, and everything. Virtualization extensions (so-called “VT”) were disabled in the BIOS by default for whatever reason, but enabling them took only a few seconds and KVM works wonderfully (running an Ubuntu 9.04 virtual machine for a Linux class).

The TrackPoint(tm) and TouchPad both work splendidly, although the TrackPoint does take a lot of practice to get comfortable with. I’m tempted to disable the touchpad in the BIOS, since I don’t actually use it for pointing (and I often erroneously swipe it with my palm while using the so-called “nipple mouse” of the TrackPoint); but I do use it for the scrolling, so I’ve not yet found a happy medium. Suggestions appreciated.

The hard disk (Western Digital WDC WD2500BEVS-0) and DVD burner drive (HL-DT-ST DVDRAM GSA-U20N) are surprisingly speedy. I’ve already burned two copies of the Fedora 11 LiveCD and several data discs (backups) with no problems. The Bluetooth works well, and I can easily send and receive files to and from my phone through the included Bluetooth stack. The wifi  (Intel WiFi Link 5300 [AGN]) works beautifully with the included iwlagn driver, enabled by default. Also, NetworkManager makes connectivity trivial. (Thanks, devs!)

The firewire and PC Card slot also seem to work – they are autodetected and drivers loaded. However, as I have no firewire- or PC Card-based devices, I cannot verify their functionality.

I have come to quickly love the GNOME Power Manager stack. According to it, the battery on a full charge should last me about 5 hours. It keeps track of how much charge the battery has, how quickly I’m consuming or charging it depending on if I am plugged into AC power, etc. It even shows me a graph of my recent power history! Wonderful little tool. With the help of Intel’s fantastic PowerTOP utility, I’ve increased that computed estimate to nearly 6 hours. (!)

With regards to multimedia, things worked beautifully without me even trying. The built-in webcam works perfectly with Cheese, and the built-in sound works for both playback (surprisingly loud at maximum volume!) and recording (not fantastic quality, but it’s very good at eliminating surrounding static and other noises). I can’t wait to try video-calling someone with the recent Empathy enhancements!

All of the hotkeys – brightness-switching, volume control, playback/navigation, etc.) work as expected, and ACPI (with GNOME Power Manager) even automatically suspends when I close the lid – wonderful!

I’ve also noticed that the machine stays colder in Fedora than it ever did while running the preinstalled Windows. Maybe this is only subjective though, as I never checked the actual temperatures in Windows. Or perhaps Linux/Fedora is better at staying in deeper C-states for longer intervals. In either case, I can work with it directly on my lap quite comfortably.

One of the main reasons I decided upon the T-series instead of a similar R-series laptop was weight. Even with the battery installed, it is only about 5.5 pounds. (That’s about 2.5 kilograms for the rest of the world who use a less-insane system of measurements.) This is quite comfortable to carry with me around school and work without tiring my shoulder.

The only thing which I’ve been unable to test, aside from the firewire and PC card slots, is the dual-screen capability. According to the included manual, it should be capable of using the DisplayPort interface to attach a secondary screen (such as a projector) and automatically resize appropriately, with [Fn]+[Spacebar]. I suppose that if this does not yet already Just Work(tm), it will be fixed by the time I need to worry about actually using it though.

Overall, I love this laptop, and am extremely happy with my purchase decision. In fact, the only qualm I have with this wonderful computer is that it’s not yet decorated! Oh great lazyweb, doe anyone know where I can get stickers for GNOME, Fedora, Linux/Tux, et al., to adorn it with? 😀

Also: A huge THANK YOU to all of the developers who helped make my first Linux-on-a-laptop experience an absolutely wonderful one. I love it when things work so simply and effectively!

My First Laptop: A ThinkPad

August 24th, 2009 3 comments

Another summer has passed me by, and I still haven’t learned how to ride a bike nor how to swim properly. Alas, I suppose I’ll get to these eventually. I have kept one of my resolutions though. I finally splurged and bought myself a ThinkPad (specifically, a T500). I decided upon the following specs:

  • Intel Core 2 Duo Processor P8400 (2.26GHz 1066MHz 3MBL2) 25W
  • Genuine Windows Vista Home Basic (Will be used only to verify hardware functionality. Fedora will replace it thereafter.)
  • 15.4″ WSXGA+ TFT, w/ CCFL Backlight (137 DPI…sweet.)
  • Intel Graphics Media Accelerator x4500HD with vPro
  • 4 GB PC3-8500 DDR3 SDRAM 1067MHz SODIMM Memory (2 DIMM)
  • UltraNav (TrackPoint and TouchPad)
  • 250 GB Hard Disk Drive, 5400rpm
  • DVD Recordable 8x Max Dual Layer, Ultrabay Slim (Serial ATA)
  • Integrated Bluetooth PAN
  • Intel WiFi Link 5300 (AGN) with My WiFi Technology
  • 9 cell Li-Ion Battery
  • 4 Year On Site Upgrade with 4 Year ThinkPad Protection

Thankfully, I found an excellent discount through the CPP (Contractor Purchase Program) which cut the cost from nearly $2,200 to just $1,400 (including shipping and taxes, state fees, et al.) – a savings of 40%! The 4-year protection plan was about 30% of the final cost. Well worth it, though.

As it is, this will be a life-safer, as I’ve been having a lot of intermittent hardware issues on my desktop: I get seemingly-random WiFi disconnects; DVD-burning often fails for no discernible reason, and my hard drive is on its last legs, so to speak. (In fact, just today I saw another 12 sectors go bad and need to be reallocated…its count is now at 177. The manufacturer maximum is 188!) – I’m all anxious and impatient now!

So, in the span of one month, I’ve spent almost $4,000 (tuition/registration fees, books/supplies, and ThinkPad). I think that’s quite enough for a while. 😮

Categories: Fedora, Life, Technology Tags: , ,

Backup Strategies

June 20th, 2009 11 comments

With my primary hard drive (a three-year old WD Raptor WD740) having been on life support, so to speak, for the last 3 months, I’ve been a lot more diligent about keeping backup copies of my data. Every couple of days, I log out entirely and run a simple rsync script to copy my entire /home directory to a specialized partition on my secondary disk, which I keep at /mnt/backup for simplicity sake.

While its parameter handling can be a bit quirky, I find that it is extremely useful for two reasons: The first more or less negates its quirky parameter handling: Clear and thorough documentation, with lots of example program calls  The second is that it saves me a lot of time in copying the files. Similar to the DeltaRPM feature I raved about with Fedora 11, it copies over only the changed content instead of the entire directory tree. With my home directory at nearly 20 GB, incrementally updating my backup like this prevents a good 90+% of the data from needing to be copied again.

In this way, I know that I have at least two copies of my data at any given time. A major plus to copying the directory tree as-is is that, once the drive does die and I replace it, I merely need to copy it over, without changing anything or unpacking huge tarballs and applying diffs, et al.

The disadvantage to this is that I only have one consistent backup copy of my data at a given time, and that backup is on a hard drive in the same computer. So, should there be a massive system failure of some sort (knock on wood!), then I would lose my data for certain. I also intend to purchase CD-RWs for this purpose – that is, as an additional backup medium – in the near future. But for right now, the second on-disk copy suffices. I also want to setup a RAID system in my next computer build…but that’ll have to wait. 🙂

So this simple rsync method, as with any storage decision, has its benefits and downfalls:
Pros:

  • Easy to configure;
  • Can be automatically run (e.g., in a cron job);
  • Updates occur via content deltas, not full copies;
  • Backup data is “as-is”, and can be used immediately after copying.

Cons:

  • Only one backup copy;
  • Physical proximity to original data;
  • Requires space for an entire duplicate of the directory tree.

For me, though, this method works out well. Do others have a similar system? Would you suggest any improvements/simplifications? I’d like to hear your thoughts on the matter! Thanks.

Leonidas: On the Brink of Release

June 9th, 2009 2 comments

With Fedora 11 (“Leonidas”) released earlier today and Rawhide looking to the future, I find myself instead looking back at what has made Leonidas such an excellent release.

With over 50 new features in this release (more than any previous release, I’ve been told!), it would seem logical that this staggering amount of new improvements would leave us with many majors bugs and issues yet to resolved – the more features we add, the less manpower/resources we can expend on each individually, right?

Wrong. With so many test days and an amazing Quality Assurance team, we’ve hammered, smashed, pounded, banged, and kicked this release into a uniquely rich and stable Fedora experience.

One of my favorite features of this release is Presto. Though not enabled by default, Presto allows users to use so-called DeltaRPMs to update the packages installed on their system. That is, instead of downloading the whole new updated packages, only the changes between the installed version and the update need be downloaded. Especially for large packages (such as some game data and OpenOffice.org) or those who are on a slower or pay-per-usage internet connection, this can be a very hefty savings both in time and cost. I used it immediately after installed Leonidas, and it saved me quite a bit on the initial updating:

Size of all updates downloaded from Presto-enabled repositories: 14M
Size of updates that would have been downloaded if Presto wasn't enabled: 128M
This is a savings of 89 percent

Win! The DRI2/KMS support has also been updated heavily and now works out of the proverbial box, at least for a large portion of Intel and AMD/ATi hardware. (This allows a proper composited desktop with 3-D and all. By default. VERY awesome.)

Another excellent feature is that the installation now defaults to using the Ext4 filesystem where applicable. I must admit, I was a bit afraid of actively using this when I was first reading about it, due to all of the reports of data corruption people have experienced; but it seems those issues are long-since fixed, as I’d been using Ext4 for my root partition since Fedora 10. With Leonidas, I took the plunge and upgraded my /home partition (via Anaconda) from Ext3 to Ext4, and have yet to notice a problem. (For those wishing to do similar – and even for those not – I would still highly recommend keeping proper backups Just In CaseTM)

Finally, while I could pinpoint each and every feature and how I feel it’s improved Fedora, suffice it to say that I don’t have adequate time to type out such a long rave. However, as much as these individual features improve Fedora on their own, it is their conglomeration which impacts us the most – the way things are so well-integrated and work properly “out of the box” (so to speak), the way that we as a community of many actively support all of this so well, the way we as a community so diverse handle bugs and packaging, the beautiful artwork and the amazing work of the Release Engineering team to distribute this blend of creativity so readily.

I’d like to rehash those last few points: It’s the wonderful combination of the efforts of you countless contributors and users which makes Fedora so great. Thank you all. Keep up the impressive work. I can’t wait for what’s to come in Fedora 12+!

Recent Lack of Availability

May 27th, 2009 1 comment

Err. If you’ve tried to get in contact with me over the past week or so (email, bug report, IRC ping, et al.), please excuse my complete lack of response. Having just finished final exams, I’d been very unproductively relaxing – playing video games, watching lots of anime, taking a short trip with family, and just generally doing as little “work” as possible – which included Fedora hacking.

I really should have posted some sort of away message or “Offline for a while” email; but completely neglected to do so. Mea culpa. As I’m now officially on summer vacation (at least, until I can find a good job/internship), that will definitely change. 🙂

Categories: Fedora, Life, Technology Tags:

I’m…geekin’ out!

May 8th, 2009 No comments

Right, so I just got back from seeing the premier showing of the recent Star Trek film at the GardenWalk IMAX with a bunch of friends, and I’m completely geeking out. Yes, there were some plot flaws in it (such as the way Kirk defeated the Klingons in the “Kobayashi Maru” exam) but it was meant to be a bit of an alternate history, and I was thoroughly impressed with the movie as a whole. The actors played their roles amazingly well, but I especially liked McCoy (Karl Urban), Scotty (Simon Pegg)  and Spock (Zachary Quinto).

I was also quite pleased in that, as the limelights dimmed for the movie to begin, at least two other people in the theater joined me in shouting Qapla’! (Klingonese: “success”). There were no Klingons in this film, but that made it no less fun!

On the other hand, I do apologize that schoolwork has taken up most of my free time recently, and will continue do so until the end of the semester (two more weeks), and because of this I’ve not been very active on the Fedora front. However, I hope to change that once classes let out for the summer. 🙂

Offline After Nearly 7 Billion Rotations

April 8th, 2009 1 comment

(That’s slightly more rotations than there people on Earth! :o)

With Spring Break giving me some much-needed time off from classes, I had some time to install and test the recently-released Fedora 11 Beta. While I do think there are many minor issues (such as Urban Terror having no sound and not being able to quit), there are many awesome improvements over Fedora 10 already. Among these are such niceties as DRI2 & Kernel Mode-Setting support for Intel video (enabled by default!), DeviceKit, and the obvious benefits of GNOME 2.26.

However, one thing that I noticed over the past weekend (looking through the awesome new Palimpsest disk utility) is that my secondary hard drive (a Western Digital WD740 Raptor) has begun to show its age after nearly 4 years of trusty service. The automatic block-reallocation and CRC error counts were already listing as “Failing” and just about everything else in the SMART self-test results are listed as “Pre-Fail.” Thankfully, it persisted long enough to backup my entire home directory to the primary disk (a 40GB Maxtor something-or-other). However, this backup has made that primary disk – which I have partitioned with everything else) almost full, with only about a gigabyte free. (That was close!) So, until I can get that replaced, I’m going to be getting my work done on my parents’ computers and those in the school labs – which means I’m not going to be able do anything Fedora-related other than simple bug-triaging for a while. With schoolwork and other duties now, it’ll probably take me about a week or so to order the new drive from NewEgg, have it shipped, and properly install it in my PC.

I do apologize for any inconvenience this may cause; but as I’ve said on prior occasions, hardware and I seem to have a very love/hate relationship.  :-/

Accidental Fixes

February 22nd, 2009 No comments

“If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra)

After fixing the notification-daemon bubbles (thanks, Martin!), I spent some time perusing through some of the other GConf settings and found another rather interesting gem: /desktop/gnome/interface/show_input_method_menu which is set to off (False) by default. Now, for the longest time I’ve had trouble in Xchat-GNOME (my IRC client of choice) with getting Japanese input to work properly. There was no preedit text or conversion from Romaji to Kana/Kanji. SCIM/Anthy just wasn’t being used at all! But changing this one item, it’s easy now to get SCIM working as it should, but selecting the “SCIM Bridge Input Method” from the context menu.

Granted, it’s definitely not a correct or long-term fix by any means; but at least now I’m not given the inconvenience of opening up gedit or some other application to switch back and forth when I want to IRC in Japanese. Yay!

I should probably go package up that new Midori release now. 🙂