Saturday, March 23, 2013

What is Arduino.SE ?

The Arduino site proposal is now close to reaching the second stage of the site creation process on Area 51. When I had first seen the proposal, it had three followers, and I became the fourth. It has now grown to 160+ followers and over 60 example questions over the course of two months at a steady rate. When I had "followed" the site proposal, I had thought that this site would become to Arduino, what AskUbuntu is to Ubuntu.



Ask Ubuntu Logo
For the uninitiated, Canonical  Ltd. is the project leader of Ubuntu. It is also at the head of a lot of technologies that were developed along with the Ubuntu platform. Canonical and Stack Exchange had together launched and licensed AskUbuntu as the main support Q&A site for Ubuntu. Canonical also maintains a separate support forum along with a host of other online services. The support forum and the Q&A site, both function together as the troubleshooters'. Arduino.cc, the official site, also has a forum site. The Arduino Q&A site is a site that could work alongside the forums, similar to how things work in Ubuntu. This however,would require acceptance and recognition by the Arduino Team of Arduino.SE, which is a pretty big bet, but is possible.

Coming back to the site, the scope of the SE site would basically include everything that is mentioned on Arduino.cc . The site would be the one repository of information about everything Arduino. I had initially posted my idea of the site scope with the aim in mind that Arduino.SE would cater to both beginners and experienced users. Here is my reasoning behind each point that I think should be covered in the site scope :

  1. Arduino Family

    This includes the Uno, Mega, Fio, Lilypad, Nano, BT, Serial, and others.
    Every board that uses the Arduino tag would be on-topic for the site. This includes both past and present boards.
  2. Arduino Derivatives

    This is something that may be a little contentious. There are a lot of Arduino-like products and Arduino derivatives, both of which are distinct in terms of functioning. I strictly refer to Arduino derivative boards such as Paperduino which are listed on the Arduino site and also, boards which are popularly considered derivatives, but may not be listed. Questions about these boards should be on-topic for the site as they are similar to the main platform as well as share a large part of the community.
  3. Software Tools

    This includes the IDEs, plugins, and libraries.
    Software tools are an integral part of the Arduino platform. They are as much a part of the platform, as the micro-controller boards. Software questions, at the moment, can be asked on Electrical Engineering or Stack Overflow, and this will unite them on a single site. Stack Overflow, in my experience on the site, does not handle hardware specific programming problems too well.
  4. Programming Issues

    This is a natural extension of the previous category. If we include, developing and using libraries, then there will be errors and problems. All such issues would be welcome here.
  5. Hardware Tools

    This did not need to be explicitly mentioned. This includes questions regarding help with using any specific tools that may be required for playing around with Arduino boards and circuits.
  6. Basic Circuit Design Problems

    This again, appears to be contentious. This is something that strictly overlaps with EE, however, I believe should be on-topic for Arduino.SE. I refer to the very minimal design issues that may be faced while designing circuits that may involve Arduinos'. Depending on the community we are able to establish, we could also start answering the more tougher and complex design problems. This however, would depend completely on the composition of the community and may or may not be feasible initially. Optimistically, such issues at some point, would become a part of the site completely.
  7. Circuit Component Issues

    This refers to only parts whose selection depends on the presence of an Arduino in the circuit.
    Again, an extension of the previous point. Questions about which register, diode, transistor, IC, resistors, LEDs, motors, power sources, and more would be on-topic. Troubleshooting problems would also be on-topic. There will be significant overlap with EE on this one, and I believe, that questions should be evaluated on a case to case basis, to determine where they should belong.
  8. Hacks of the hardware, and/or Extending the boards

    Possibly, the most contentious of them all. I envision this site to cater to all levels of expertise and knowledge and thus have information, both horizontal and vertical. The site should deal with issues ranging from naming, seeking permissions, trademarks, logos, and basic legal issues (assuming that we are able to get the necessary expertise). Apart from that, making changes to the board, altering characteristics, adding and/or removing components should also be on-topic. I believe this is necessary if we want to become the one repository for Arduino information. This   could make the site become home to discussions about new boards in the Arduino line-up, even
    before they are released.
  9. Hacks of/through the Software

    This is an extension of #3. Questions about changing and improving existing libraries, IDE's and APIs should be on-topic for the site. 
  10. Projects and Applications Issues

    This includes ideas, advice, guidance in specific issues or problems including design.
    Self-explanatory. Questions, about the structure and design of projects should also be welcome. To what extent, though, is something that we will be able to see from the questions that come up.  

The Community that we may be able to establish should/would include users of all levels of experience with the platform. The site should have both electrical engineers as well as software engineers and #8 and #9 are topics that would interest them. Such topics would interest advanced users of the platform as well. Beginners and intermediate users would comprise the major part of the community. The community is expected to be quite diverse having artists, designers, hobbyists as well. All in all, this will make for one interesting and vibrant site.

Sunday, March 17, 2013

Area 51 is Broken


Recently, the Arduino site proposal was hit by a serial downvoter. On my last count, every question had received at least one downvote so thats about 50 downvotes spread across two pages (Someone really considers this as a bad proposal idea). I thought this was wrong (how could it not be?) and the issue was brought to the attention of the Community Team. However, what happened next, really surprised me. One of the Community Managers looked into it, and responded with :

 I looked at the actual voting data on the example questions and there is one person who cast a large number of downvotes. It looks like there's a user who doesn't think the proposal should go through or that the proposed questions belong to it, which is entirely fair. This is exactly what Area 51 is for.

The one thing that stood out here was that, downvoting all the questions on a proposal page is an acceptable way to not-support or block a proposal. What I find even weirder is the fact that this is the only way to block a proposal (not considering duplicate proposals, in which case there are other ways). So, I believe that Area 51 is broken. What do I mean by broken ? Have a look.



I dont agree with a lot of the stuff said in the video, but I do agree with the main point.
If I think its broken, its broken.
Dont worry, thats not going to be my only argument in this post.

Stack Exchange is a service and earns its money off user data and user actions on the site. So, having a good interface is pretty much one of the basics. Just to be clear, the overall Stack Exchange user interface is really good and functional, it is just Area 51 that seems to belong to a different age and time.

It is only here that the functionality and usability dont match which goes against a simple UI design principle :

The principle of context -- Limit user activity to one well-defined context unless there's a good reason not to

What this principle states is that an action should have a single function and should work in a single context. As an example, lets look at the Back button on your browser. Its action while in the middle of a browsing session is to simply take you a logical step back, that is, one web page back. What happens if you are on your first page ? There are two possibilities here, either it could simply not function and provide a message saying that you are on your first page or it could limit the action to the specific context and close your browser window. Now, lets see what actually happens in real browsers. When you open up Chrome (or Chromium), and are on your home page, you see this :


Freehand Circles. Sigh.
The back and forward buttons are grey-ed out. You cannot actually quit by clicking on the back button. Here, the action is preserved to a single context. I believe this to be a better design methodology considering that you will be catering to users having varied expertise levels in using computers. Of course, this rule has a conditional attached to it. However, coming back to the Area 51 user interface, I really see no good reason for the downvote action to be used in different contexts. The UI itself is far from being cluttered. Its more minimalistic than what is present on other sites.

This actual usage goes against another design principle :

The principle of shortcuts-- Provide both concrete and abstract ways of getting a task done

The principle here is that there should be both long and short ways of doing a task. As users become more experienced with an application, they tend to migrate from the longer method to the shorter method. This principle, also implies, that the user interface should make common actions accomplish-able in the minimum number of steps.

Lets go back to Area 51 now. When a user sees a proposal idea, the two possible reactions are either that the user likes the proposal idea or does not like the proposal idea (internet browsing individuals are opinionated). If a user likes a proposal idea, then the most basic action that a user can do is to support it, by clicking on the Follow It! button.

However, if a user wants to do the alternative, then there is no visible option. I see how this protects proposal ideas from getting bombed by malicious users, but what it misses is a large part of the dont like opinion.

Now, the proposal has a lot of example questions underneath. If you think that a question is a good fit for a site, then you can upvote it. If you dont think it is a good question for the site, then you can downvote it.

Upvote Tooltip
Downvote Tooltip








This feedback is directly sent to the question poser, who had put in time to think about how to develop the proposal and what it should include. Simple. Users who are interested in the proposal can use these options to improve the proposal and provide constructive inputs, as is suggested by the tooltips. However, there still is the other faction of users who think that the basis of the proposal itself is wrong, and have had no chance to express disagreement. Now, things get complicated.

Some of the users, who feel that the proposal is a really bad idea, realise that they still can express disagreement by downvoting the questions. Now, a downvote, as I mentioned, is equivalent to negative feedback on the question. It is not for
I'd rather not see this proposed site
(However, I was told that this is just a semantic difference, something that I do not agree with)

It is for feedback on the question, not on the context of the question and there is no way for the question poser to know the context of the feedback. So, this faction is able to implicitly thwart the proposal, by explicitly telling off users on their constructive inputs. The more motivated ones, like the one who caused this whole discussion, may go trigger happy and downvote all of the questions.

So, how can this be avoided ? How can agreement and disagreement both be expressed ?
My take. Coming up soon!

Friday, March 8, 2013

A Short Guide to the Essentials of Stack


Background

This guide is intended for users absolutely new to the system and covers the basic UI elements.
For more in-depth guidance and advice, search Meta Stack Overflow for relevant posts.




There are five basic elements of the Stack Exchange user interface that you will be using the most, and understanding how these affect you, and how you affect others' through these, will make your experience much more worthwhile. I will be using this question (of mine) as a reference to explain the basic features. The five basic elements are :

Posts

Posts here refers to both questions and answers. Both follow different formats.

Questions

You can ask questions by clocking on the Ask Question button available on the home page. Questions have two parts.
The first part is the question title. It is a short description of the problem such that a person reading it should be able to generally understand what your problem is about.
    This is the title.

The second part is the question body. The should contain the complete question along with everything else needed for the problem to be answerable and ideally, even details asked for in the comments should be added to the question body.

The answer with a grey tick sign
The same answer marked as correct

Answers

You can answer a question by clicking on the Answer Question button at the bottom of the page of a question. Answers just contain a body.


The body should contain all the relevant details needed for the problem to be solved. If referencing any external sources, make sure that you add the relevant part of the reference to the body itself and then cite the source below it. Link only answers are not considered answers and will be deleted.

As shown in the image, one answer can be marked as the correct answer by the question poser. The correct answer is the one answer that was able to solve your problem. In no other scenario, should an answer be marked correct, even if other users may pester you to do so (which happens quite frequently). An answer can be marked as correct only after a certain amount of time has passed since the question was posted. A grey tick sign appears adjacent to every answer, clicking on which sets that answer as the correct answer. The grey tick sign then changes to a solid color, such as green as can be
seen in the image.


    Upvote

    Upvotes can be cast by clicking on the up arrow button next to a post. An upvote is a sort of acknowledgement that the post is good. The message shown on hovering over the button also says the same thing. 

    There are certain things that you should consider while casting upvotes for a question :
    • Is the question clear and understandable ?
    • Does the question have the relevant schematics and/or code within the body ?
    • Did the person try to solve the problems on his own ? If yes, has the person shown his attempts at tackling the problem ?
    • Is it something that cannot be easily Googled and found ? (This last one is my personal metric and is used by quite a few users within the Network, but its not a standard rule as pointed out by  the FAQs across the network)
    There are certain things that should be considered for casting an upvote for an answer as well :
    • Is the answer clear and understandable ?
    • Is the answer self-contained ? Does it contain the relevant information from any external sources with it ?
    • Does the answer solve the problem ? If not, does it at least, attempt to solve the problem and provide something extra as well ?
    If one of your posts was upvoted, it means that you were able to satisfy some or all of the aforementioned criteria or that someone found your post useful irrespective of these factors. Either way, you did a good job! 

    Lastly, upvotes are anonymous.


    Downvote

    Similar to upvotes, downvotes can be cast by clicking on the down arrow. A downvote is a negative feedback for the creator of the post. It is used to tell the creator that the post has serious problems. Downvotes should not be used lightly.

    There are certain specific factors that you should consider before casting a downvote on a question :
    • Is the question unclear or hard to understand ?
    • Is the problem easily solvable via searching through Google ?
    • Is the question lacking in some way ? Is the question incomplete ? Is the question missing schematics / code relevant to the problem ?
    • Has the person not attempted to solve the problem on his own ? Has the person posted his attempts at solving the problem ?
    Some things to keep in mind before going trigger happy. If the post has only grammatical or spelling problems, then you should first attempt to make corrections and try to make the post understandable. Salvaging a post should be the first action, followed by downvoting.

    There are certain factors that should be looked at before casting a downvote for an answer as well :
    • Is the answer unclear and not understandable ?
    • Is the answer referencing an external source and not providing a solution within the body ?
    • Does the answer not even attempt to answer the question ? If not, does the answer not even provide something useful to the problem ?
    • Is the answer a veiled advertisement of a product without any disclosure ?

    This feature is not available until you are able to gain some experience on the site. However, your posts can be downvoted by other users. If that happens, you should evaluate your post on the basis of these guidelines and see whats missing.

    While casting downvotes, I would advise exercising caution. Downvotes should not be cast without due considerations and after an attempt to salvage posts.

    Downvotes are also anonymous.

    Comments

    Comments are like meta-posts. They are short messages that can be used to communicate with the different individuals who were a part of both creation and editing. To communicate with any user, you simply need to prefix @ to the username, and then write the rest of your message. The user gets a notification about the message instantly. However, in a comment you can only notify one user.

    Comments under the question body. Only for the serious stuff.

    Comments serve different purposes  depending on where they are. Comments should be used only to seek clarifications from the author, ask for extra details, or to make suggestions to improve the post. Before clicking on the downvote button, it is always better to first inform the user about what is lacking in the post and what changes need to be made. If the user does not respond only then should you downvote the post. Sometimes, they can be used to suggest solutions to the problem, however, that is not recommended, even though many users indulge in this habit.

    Notifications

    Notifications are alerts that you get when a post of yours gets a answer or a comment, when an edit is made or suggested, and when someone makes a comment with @your-user-name. Initially, you also get notifications about any badges that you earn on the site.


    The small StackExchange button on the left serves as the main notifications panel. Clicking on it shows you all the recent notifications, as well some of the most interesting questions from around the network.
    Towards the left, there is a panel that displays your user name, along your reputation score, number of badges. On hovering over it, you get an expanded panel, showing you all your recent reputations changes.


    With that we come to the end of this brief tour of the Essentials. I have chosen to not go into the reputation system and badges system at this point as it is not an important part of the system. It is an integral part, but not an important one. Lastly, some of the features described here become available only after crossing certain reputation requirements. These are site specific and can be found in the respective FAQs. As and when a feature of the site becomes available. you get a notification about the same.




    If you keep the points described here in mind, then reputation and badges are the last things that you will have to worry about.

    Wednesday, March 6, 2013

    Why am I promoting Arduino at Stack Exchange ?

    This is a chat message that I wrote in response to a comment asking me :
     why are you keen on promoting Arduino.SE ?
    (In case you were wondering, all this was happening on Area 51)

    I started out writing something that turned into a rather long explanation, and I believe is worthy of a blog post. So, here it is :

    A combination of reasons. In the few months that I have been on Stack Overflow and Stack Exchange, I have interacted with some amazing individuals right from engineers at Googleplex, California to researchers in UK. I have helped some university students through really awesome project work, some of which I followed up outside of the platform of SE as well. I have answered a few questions and asked some as well and have got excellent responses. Moreover, the different Se sites that exist have made me enjoy this experience even more.

    The SE platform is one that the more I use, the more I discover and the more I believe in. I think it has some excellent tried and tested features which make it an excellent platform for technical discourse and learning(to an extent). Look at the toolkit at User Interface as an example. I dont see why we should not provide such tools to different communities and specifically the Arduino Community.

    Also, SE inadvertly extends to social interactions as well, which further strengthens the community. There is direct interaction with employees, there is a very responsive Meta.SO community as well. I do think there is scope for a slight bit of an increase in the social aspect of the platform, but thats for another discussion.

    Coming to Arduino itself, I started using the platform a year back and have enjoyed using it. I have done a few projects and done some stuff that I probably would not have done if not for the abstraction that the platform offers. The Arduino forums do exist but in the time I have spent there, I have realised that a forum just does not scale up and or work as well as SE when it comes to resouce generation and sharing. There are a lot of questions there for which detailed answers exist but they are extremely hard to find. So, instead you get some quick short answers, but you miss out on that one great answer. Moreover, there usually isn't any closing thread feature as well which is immensely irritating. All this knowledge and expertise, would be much better served on this platform rather the 3-4 major Arduino forums that exist. I am overly optimistic when I think about bringing individuals from dfferent platforms together but I do believe its worth trying.

    As far as why not EE goes, I just do not believe that they are serving this community as well as possible.

    Knowledge is valuable, but only if it is there for people to find, and in short, this is one of the best ways to share it. I want to contribute to both, SE and Arduino, in more ways than I can just now and this is one way that I can. I will continue to push this forward till it does become a site.

    What is Area 51 ?

    I stumbled across Area 51 while wandering through the Stack Exchange network. 
    Look at the spaceship

    The FAQ states:
    Area 51 is the Stack Exchange Network staging zone. It's where groups of experts come together to build new Q&A sites that work just like Stack Overflow. Here you can:
    • Propose new Q&A sites. If you have an idea for an expert Q&A site, propose it here.
    • Get involved in the process. Help sites get off the ground by defining the types of questions that are wanted, recruiting a critical mass of experts, and committing to the site's success.

    This is where users can propose new site ideas which are called New Site Proposals in SE lingo. These sites need to go through three phases before they get launched as official sites under the Stack Exchange network. The phases are :

    • Definition Phase : This is first phase and the phase where most proposals get weeded out. In this phase, users are expected to :
    • Click the "Follow It!" link, if interested in a proposed site.
    • Post questions that you would want to see on the actual site, when launched.
    • Upvote questions if you think they'll be interesting and are relevant to the proposal, downvote questions if you think they are not. 
    • Comment on questions already proposed to seek clarifications about the question and discuss it.


    • Commitment Phase : In this phase, the defined site requires individuals to commit to using it. Users can commit to the site by filling in their name and level of experience in the proposal domain. A commitment can be easily fulfilled, its just 3-4 questions and answers.


    • Beta Phase : If a proposal reaches here, then the supporters have done an excellent job so far (will explain later). This phase is extremely critical for the future of the site. It has two very different phases within it.
      • Private Beta : Users who committed to using the site are initially invited to participate in and simultaneously test the site and its features. This also acts as the seeding phase of the site before it opens up to the World Wide Web. The users have an extremely critical task at hand as whatever content is created now decides, at the very least, the site's direction for the short term future.
      • Public Beta : Now, the site opens! It is fully functional and requires a lot of publicizing and content to truly take it towards success. Once the site satisfies certain criteria and reaches the tipping point, the site gets launched as a Stack Exchange Network site.


    This was a summarized description of the site creation process. It should be enough to get you started on the platform.


    Certain parts have been copied AS IS from the Area 51 site FAQ. These parts have been indented and are in a different font to be easily identifiable.