Standard Privacy Policy

This app doesn’t ask for, collect or store any personal information.

Posted in Uncategorized | Leave a comment

Comcast: a role model for what your business should NOT be

The Comcast user experience and customer service is an unbelievable sequence of frustrations. I was already tired of playing their “please bring my rates back to normal” game every 6 months, but now my bill gets increased every other month. Playing this stressful game with Comcast every other month is insane.

I tried to login to my account to check what was going on, but guess what, I couldn’t remember my account’s username. The reason: Comcast assigns a Comcast email for you when you create your account, so it’s really cumbersome for you to remember such yet another email, that you use for nothing but to manage your Comcast account. Hello Comcast, this is 2011!

I click in the helpdesk chat option to talk to someone to retrieve my user name. I’m redirected to the chat briefing page and a new window opens with the same contents. Why? Didn’t they care to test that two pages are opening with the same content, just to confuse the user?

I dismiss the extra page, enter some info and log in the chat session. The chat window is a mess. It doesn’t scroll down automatically, and when I move focus away from it, it scrolls back up. REALLY frustrating experience. If the window is out of focus, the page doesn’t show any notifications telling that the support analyst has replied. So the customer has to keep going back there and scrolling down to see if anything happened. The analyst replied to me once “May I know are we still connected?” – that’s a mix of hilarious, ironic, and really bad experience. Most impressively, if you scroll down then click in the “Type here” box… the chat window scrolls all the way up again! The cherry on the top of the cake is that the page has a resize “grip” button in the lower right, but it simply doesn’t work AT ALL. How, Comcast, how can you fail in so many points?

The analyst asks for my account number. If I don’t know my username, why the hell would I know my account number? He’s not able to retrieve the account number from my phone number, because it doesn’t match the one in my account. Why? Because in the past, Comcast assigned a phone number to my account (for its phone/voice services, which I have no interest in having), and I’m supposed to remember such an extra phone number. In a previous helpdesk session some time ago, I asked them to replace the phone number in the account with my own phone number. They said it would be a pleasure to help me, and then told it was done successfully. Now I realize I just wasted my time, since the update didn’t work at all.

The analyst took an unbelievable amount of time to find my account number given my service address. Is he a junior intern or something similar? I’d be expecting this to be a really common scenario. Whatever, I was able to find an old file with my account number in my computer and passed it to the analyst. He seems to be really relieved, and gives me my username. I start another chat window with someone from the financial department. I have then to re-provide all the information I provided before! The agent took again a long time to reply, and provided me an interesting reading while I was waiting: the Comcast Customer Guarantee. Sounded like a joke:

  • “We will treat you and your home with courtesy and respect.” Why do you need a guarantee for that? Serious businesses call this ethic and that’s implicit for
    them.
  • “We will continually offer the best and most video choices”. Why do you care having something as ambiguous and vague as this in a customer guarantee? This is the typical business mumbo-jumbo that can’t be measured, and ends up just causing frustration and failed expectations.
  • “We will offer easy-to-understand packages and provide you with a clear bill.” What a joke! Your “Partial Month Charges & Credits” section looks like a puzzle game. How are average costumers supposed to understand why descriptions like “11 days @ $1.4309/day based on a monthly rate of $42.95” sometimes refer to a charge, sometimes to a credit? Fail.
  • “We will give you a 30-day, money-back guarantee”. Like the lemon law was the biggest news in town.
  • To be fair, the only thing that stands out is that Comcast will give customers $20 if they (1) are late to an appointment or (2) require more than one appointment. And that’s it.

After 10 minutes of chat, the agent told me that “It seems your bill had a slightly increase.” So am I wasting all this time to hear that? Looks like I’m talking to the Ents in the Lord of The Rings, that spend a zillion hours to conclude obvious things. Tell me something I didn’t know! In fact, Comcast has been “slightly increasing my bill” since 2008, and now twice per month!

In a grand finale for my wasted time, the agent gave me a unique sample of the standard Comcast replies, with lots of buzzwords and mumbo-jumbo:

It is because we’re continuing to experience increased business and operational costs, while making continued investments in next-generation technology to deliver innovations. Pricing adjustments happen at different times of the year based on factors like new products becoming available, service enhancements and other increased
operating expenses Doc ID 1287331

What a marvelous piece of BS! My services didn’t change a thing, and you tell me you are not competent enough to keep your operational costs under control in the last 3.5 years? I wonder what the Doc ID 1287331 is for. Am I talking to a robot pre-programmed to provide default replies to customer questions? Was the guy copying the answer from a standard helpdesk answer repository and forgot to remove its ID? Why do you care showing your BS reply’s Doc Id to me, Comcast? Isn’t your “I can’t do anything at all” answer painful enough?

The analyst’s final comment: Actually I cannot make any adjustment to the rate, however you can call our sales department at 1-800-9346489 for them to make the changes if needed. Yeah, I know exactly the kind of change I want to do. Change to Verizon FIOS or
Quest/CenturyLink.

Posted in Uncategorized | 3 Comments

Hello (new) world

Following Live Spaces recommendations/migration process, the “FurtaSpace” blog now has a new home: https://awfurtado.wordpress.com/. All previous posts were ported. Will this new house inspire my blogging efforts to catch up with tweeting efforts? No one knows…

Posted in Uncategorized | Leave a comment

The requested page cannot be accessed because the related configuration data for the page is invalid

Problem
When trying to consume a web service deployed to IIS, the following error is displayed:
Description: The requested page cannot be accessed because the related configuration data for the page is invalid.
Error Code: 0x80070021
Config Error: This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".
 
Then is complains about the <handlers> section in the web.config file.
 
Solution
 
To correct error I changed the following values located in the applicationHost.config file located in Windows\system32\inetsrv.
Change all of the following values located in section <configSections> –> <sectionGroup name="system.webServer">
<section name="handlers" overrideModeDefault="Deny" /> change this value from "Deny" to "Allow"
If you see any errors such as
 
Handler XXX has a bad module "ManagedPipelineHandler" in its module list
 
ensure you have ASP.NET properly installed (aspnet_regiis -i). Finally, ensure your app folder is a web app in IIS (not only a regular folder).
 
BR,
— AFurtado
Posted in Computers and Internet | 1 Comment

Software Engineering Research and Validation

Doing Software Engineering research requires well thought out planning and validation approaches. Studying such topics, I have come across a couple of interesting papers. A summary of their most interesting points (for me) follows below.

Writing Good Software Engineering Research Papers
(Mary Shaw)

· A research paper should include a number of questions stating your contribution (question you answered, why the reader should care larger questions addressed), your new result (previous work , new knowledge, details) and why readers should believe you (evaluation standard/method, evidence connecting claim and result).

· Types of software engineering research questions include: method/means of development, method for analysis or evaluation, design/evaluation/analysis of a particular instance, generalization or characterization, feasibility study or exploration.

· Program committees look for a clear statement on the specific problem you solved and how it will scale. Tell your answer and why it matters.

· Quantitative models have a better success rate (as being recognized by the scientific community) when compared to quantitative models. Tools and notations are well represented, usually as auxiliary results in combination with a procedure or technique.

· Types of software engineering research results include: procedure or technique (should be really a procedure, not advice or guidelines), qualitative or descriptive model (e.g., a taxonomy, a framework, well-organized interesting observations), empirical model, analytic model, tool or notation, specific solution/prototype/answer/judgment, report.

· You should explain your result in such a way that someone else could use your ideas. Precisely tell what’s new: the idea, the application of the idea, the implementation, the analysis or what?

· For tools: was the contribution the technique that is embedded in the tool, the effectiveness of the tool when compared to others, the applicability of the tool or what? Does the tool simply support the main contribution, or is itself a principal contribution? Can the idea be applied without the tool?

· Explain how you build atop previous work, otherwise you may damage credibility if the committee can’t tell whether you know about related work.

· A paper that simply reports on using numerous elements together is not enough, even if it’s well engineered. There must be an idea or lesson or model readers can take and apply to other situation.

· Types of software engineering validations include: analysis, evaluation, experience, example, persuasion, blatant assertion.

· Analysis, actual experience in the field and good use of realistic examples tend to be the most effective ways of showing why your result should be believed. Careful narrative, qualitative analysis can also work.

· Pilot studies that lay the groundwork for controlled experiments are often publishable by themselves.

· If you claim to improve on prior art, compare your result objectively to prior art.

· If you performed a controlled experiment, explain the experimental design: hypothesis, treatment, what is being controlled, collected data, how it was analyzed, significance of results, confounding factor, whether the conclusions follows rigorously from the experimental data.

· For PhD thesis validation section: global statements (“always, fully”) often require analytic validation, qualified statements (“X% of improvement”) can often be validated by evaluation or careful examination of experience existential statements (“we found an instance of”) can sometimes be validated by a single positive example. Students can restate thesis claims to reflect more precisely what the theses actually achieve.

· Suggested abstract structure: two or three sentences about the current state of the art identifying a problem, one or two sentences on the contribution, one or two sentences about the specific result and its main idea, one sentence about how the result is demonstrated or defended.

Selecting Empirical Methods for Software Engineering Research
(Steve Easterbrook, Janice Singer, Margaret-Anne Storey, Daniela Damian)

· Five classes of research methods are considered to be the most relevant to software engineering: controlled experiments, case studies, survey research, ethnographies and action research. The choice of methods depends upon the theoretical position (stance) of the researcher, access to resources and how closely the method aligns with the questions that have been posed.

· The selection of methods for a given research project depends on many local contingencies, including available resources, access to subjects, opportunity to control the variables of interest and the skills of the researcher.

· One of the first steps in choosing an appropriate research method is to clarify the research question.

· The most obvious question is not the best choice for a starting point.

· Defining the precise meaning of terms is a crucial part of empirical research and is closely tied with the idea of developing or selecting an appropriate theory.

· In the early stages of a research program, we usually need to ask exploratory questions to understand the phenomena: existence questions (Does X exist?), description and classification questions (What is X like? What is it for? How to categorize/measure it?), descriptive-comparative questions (How does X differ from Y?)

· Then we need to ask base-rate questions about the normal patterns of occurrence of the phenomena: frequency and distribution questions (How often does X happen? What is the average amount?), descriptive-process questions (How does X normally occur? What is the process by which it happens? What is its sequence of events?), relationship questions (Are X and Y related?)

· Then we should ask causality questions and, finally, design questions (How to achieve X?)

· Theories support the process of empirical induction because an individual study can never offer conclusive results. Each study adds more evidence for or against the prepositions of the theory. Without the theory, we have no way of making sense of the accumulation of empirical results.

· A controlled experiment is an investigation of a testable hypothesis where one or more independent variables are manipulated to measure their effect on one or more dependent variables. Each combination of variables is a treatment (configuration).

· A precondition of conducting an experiment is a clear hypothesis. The theory also helps to decide who the subjects are and what the tasks should be.

· A case study is something very different than just worked example. It can be exploratory (initial investigation to derive hypothesis and build theories) or confirmatory (to test existing theories).

· Case study research is most appropriate for cases where the reductionism of controlled experiments is inappropriate.

· The major weakness of case studies is that the data collection and analysis is more open to interpretation and researcher bias. For this reason, an explicit framework is needed for selecting cases and collecting data.

· A survey research is used to identify the characteristics of a broad population of individuals. It can be done through questionnaires for data collection, structured interviews or data logging techniques.

· Sampling bias causes problems in generalizing the survey results, because the respondents to the survey may not be representative of the target population. Low response rates increase the risk of bias.

· Ethnography is a form of research focusing on the sociology of meaning through field observation. The goal is to study a community of people to understand how members of that community make sense of their social interactions.

· In action research, the researchers attempt to solve a real-world problem while simultaneously studying the experience of solving the problem. There’s lots of debate on the validity of action research as an empirical method.

· Mixed methods research recognizes all methods have limitations and the weaknesses of one method can be compensated for by the strengths in other methods.

· Criteria for validity (for positivists/reductionists) include: construct validity (whether theoretical constructs are interpreted and measured correctly), internal validity (whether the results really follow from the data), external validity (whether claims for the generality of the results are justified) and reliability (whether the study yields the same results if other researchers replicate it).

· In reporting positivist empirical studies, it is important to include a section on threats to validity, in which potential weaknesses in the study design as well as attempts to mitigate these threats are discussed in terms of the criteria above.

· Strengths for improving validity (from a constructivist point of view) include: triangulation (use different sources and methods), member checking, rich/thick descriptions, clarify bias, report discrepant information, prolonged contact with participants, peer debriefing, external auditor.

· It is important to document the original planned research protocol, and all subsequent deviations to it, to allow other researchers to understand the study design, interpret the search results and replicate the study.

· Methods that are primarily qualitative include ethnography, case study and action research. Quantitative include controlled experiments and survey research.

· With regard to research and validation, it is important to plan ahead, for smooth analysis and interpretation of results.

Qualitative Methods in Empirical Studies of Software Engineering
(Carolyn B. Seaman)

· In software engineering, the blend of technical and human behavioral aspects lends itself to combining qualitative and quantitative methods in order to take advantage of the strengths of both.

· Advantage of qualitative methods: they force the researched to delve into the complexity of the problem rather than abstract it away. The results are richer but labor-intensive.

· Participant observation and interviews are one of the most common data collection methods. Interviews can be structured or unstructured (in the latter case, interviewees are the source of both questions and answers).

· “Coding” is the process of extracting vales for quantitative variables from qualitative data in order to perform statistical/quantitative analysis. This approach is especially difficult when the concept to be coded is subjective in nature, when the terminology used to describe it varies and is difficult to interpret, and when different data sources disagree.

· The distinction between qualitative and quantitative data has to do with how the information represented, not whether it is subjective or objective.

· The “constant comparison methods” is a data analysis method that tags qualitative data with terms, and then groups related information together to look for relationships.

· Cross-case Analysis a data analysis method that cross-compiles data.

· A hypothesis cannot be proven; it can only be supported or refuted. This is true independent from the usage of qualitative or quantitative methods.

· One of the most important ways to help confirm a qualitatively generated proposition is to ensure the validity of the methods used to generate it. Some validation concerns are: representativeness, possibility of researcher effects on the study, triangulation, anomalies in the data, negative case analysis, replication and member checking.

· Researchers have a marketing role as well, trying to promote the importance and usefulness of the empirical study in software engineering.

· Empirical studies can be classified in: blocked subproject-project (multiple projects and subjects to reduce bias), replicated project study (same project, multiple subjects), multiproject variation (single subject, projects before/after some treatment), single project study (single project, single subject, similar to a case study, possibly compared to some organization baseline).

BR,
— AFurtado

Posted in Software Engineering | 10 Comments

PM verb blitz

While positions in the Dev/Test discipline at Microsoft are straightforward to understand for newcomers, this is not exactly true for the PM (program management) discipline. It’s not the same thing as project management and relies much more on a technical side.
 
Steven Sinofsky already detailed what program managers do at Microsoft. My contribution here is a "verb blitz": what are common actions performed by PMs? Here you have a list compiled from some colleagues:
 
  • adjust
  • aggregate
  • analyze
  • approve
  • associate
  • assume
  • attest
  • build
  • carry
  • clarify
  • close
  • complete
  • confirm
  • connect
  • consult
  • contact
  • cooperate
  • create
  • declare
  • decline
  • define
  • describe
  • determine
  • dilute
  • disable
  • distill
  • drive
  • enable
  • find
  • follow
  • gather
  • highlight
  • illuminate
  • improve
  • inquire
  • inspire
  • interact
  • investigate
  • isolate
  • lead
  • learn
  • look
  • manage
  • match
  • mix
  • move
  • offer
  • open
  • optimize
  • partner
  • post
  • present
  • prioritize
  • prove
  • purchase
  • randomize
  • read
  • refer
  • reject
  • release
  • remix
  • replicate
  • reply
  • reproduce
  • request
  • require
  • resolve
  • review
  • set
  • share
  • sign-up
  • submit
  • substitute
  • succeed
  • summarize
  • swap
  • sync
  • transfer
  • triage
  • validate
  • verify
  • win
BR,
— AFurtado
Posted in Career | 14 Comments

How I extend Visual Studio?

These are the projects of individuals/companies who presented in the Microsoft’s Development Tools Ecosystem Summit 2009 how they are extending Visual Studio:

  • Atmel – IDEs for AVR microcontrollers
  • Oleg Synch – T4 Toolbox: a set of ready-to-use code generation templates and supporting tools
  • Collabnet – Subversion integration
  • ComponentOne – enriched VS/SharePoint components, such as a spell-checker for VS and a Silverlight XAP file optimizer
  • GamCom – Talmia: process workflow for Team System
  • Intel – Parallel Studio: enhances Visual Studio for parallelism (C++)
  • JNBridge – .NET / Java interoperability plug-in (for VS and Eclipse)
  • Micro FocusDevPartner Studio integration into VS2010
  • Odin Technology – Coded UI test generation from Excel spreadsheets (cool!)
  • OpenMake Software – extends build support for environments with multiple versions of .NET (VS 6.0 through 2010)
  • PreEmptive – Runtime Intelligence: code instrumentation for finding different kinds of hotspots (such as code heavily used but poorly tested)

I didn’t speak this time, but you are always invited to try out my SharpLudus project which extends VS by combining model-driven development with XNA, hopefully enabling a more productive game development process.

BR,
— AFurtado

Posted in Software Engineering | 18 Comments

Keyboard key mapping – solving the ASUS question mark (?) problem

Just sharing something useful: I have an ASUS laptop with a brazilian keyboard but the question mark/slash key (? and /) never worked with the brazilian ABNT layout. After browsing the web I found out that such a key was being mapped to the Control Key. The way to solve this was to map it to the question mark key, by setting the following registry key:

  • Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
  • Value (name): Scancode Map
  • Type: REG_BINARY
  • Data: 00 00 00 00 00 00 00 00 02 00 00 00 73 00 1D E0 00 00 00 00

This tells your computer to map the right control key to the “/?” key.

Log off, then log on. The problem will be solved.

BR,
— AFurtado

Posted in Computers and Internet | 2 Comments

Singleton design pattern vs. static classes

During an internal .NET 101 training at Microsoft one of my students asked a very interesting question: why would we choose to use a Singleton design pattern instead of simply using a "global" static class?
 
After some thinking and investigation, here are my conclusions of the benefits for sticking with Singletons:
  • Singletons are objects and it might be more intuitive to deal with them for state manipulation rather than through the use of static fields in static classes.
  • In the same line, you can’t pass a static class as parameter, while no such limitation exists for the Singleton object.
  • Static classes cannot implement interfaces. The class that defines the Singleton can.
  • The global static class can be loaded too early, consuming valuable application resources, while the Singleton supports lazy allocation where an instance is created only as needed.
  • Static classes do not benefit from default serialization mechanisms.

BR,
— AFurtado

Posted in Software Engineering | 22 Comments

Brazil wins Imagine Cup for the 5th time! / Brazil vence a Imagine Cup pela quinta vez!

versão em Português mais abaixo

For the fifth consecutive year, Brazil wins a category at the Imagine Cup world finals (the biggest student technology competition in the world). This time, team LEVV It, from Pernambuco, got the first place with in the Game Development invitational with the game Choice.

As one of the judges of the XNA Challenge Brazil 2009, I was able to play the game and was impressed by its game design: arcade action is well dosed with strategic insights, and the result is lots of fun!

Brazil also got fantastic results in other categories, such as first place in Design, first place in Interoperability and third place in Software Design (main category), among others. Click here to check all the results. Other relevant news: Romania got the big prize (first place in Software Design) and Imagine Cup 2010 will be held in Poland (cool).

Being a “retired” contestant starting with Imagine Cup Japan 2005, I’m really glad to know that Brazil’s results at Imagine Cup are not one-off, but very consistent across the years. Congratulations to the Brazilian group at Egypt!

BR,
— AFurtado

————————————————————————————————————

Pelo quinto ano consecutivo, o Brazil vence uma final de Imagine Cup, a Copa do Mundo da Computação. Dessa vez, o time LEVV It, de Pernambuco, conseguiu o primeiro lugar na categoria de Desenvolvimento de Jogos com o jogo Choice.

Sendo um juiz do XNA Challenge Brazil 2009, eu pude jogar o jogo e fiquei impressionado com o seu game design: ação estilo arcade se combina muito bem com estratégia, resultando em muita diversão.

O Brasil também conseguiu resultados fantásticos em outras categorias, como os primeiros lugares em Design e Interoperability, além de terceiro em Projeto de Software (categoria principal), e outros. Clique aqui para ver todos os resultados. Outras notícias relevantes: a Romênia ficou com o grande prêmio (primeiro lugar em Projeto de Software) e a Imagine Cup 2010 será na Polônia.

Como um competidor “aposentado” da Imagine Cup, começando pelo Japão em 2005, estou realmente feliz em ver que os resultados do Brasil na Imagine Cup não são por acaso, mas sim muito consistentes ao longo dos anos. Parabéns, comitiva brasileira no Egito!

[]s
— AFurtado

Posted in Imagine Cup | Leave a comment