Bitboards- Part 1

A bitboard is a data structure primarily used for representing chess boards. It could be called a specialized bit array (an array of bits), where every bit represents one square in the board. Instead of representing the whole board in one variable, every chess piece has its own bitboard, where the piece will be a set bit (1) and an empty square will be a 0.

Bitboards take advantage of the fact that a chess board consists of 64 squares and 64 bit numbers can be easily handled by a computer. A 64 bit number looks like this :

0000000000000000000000000000000000000000000000000000000000000000

Where the left most bit is the MSB (Most significant bit) and the right most bit is the LSB (Least significant bit). To make stuff easier, this number can also be written as:

0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

You must have noticed that this bitboard is empty, since all its bits are set to 0. Since a piece is represented by a 1. Here’s how a bitboard representing the initial position of a white pawn will look like:

0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 
1
0 0 0 0 0 0 0 0

Which in binary, would be 0000000000000000000000000000000000000000000000000000000100000000 or the number 256. (It can also be written as 100 in the hexadecimal system)

Similarly, a white king will be represented by

0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 
1 0 0 0

Which would be the number 8.

Now since you know how to roll which bitboards, it should be pretty easy to create bitboards for every chess piece. Since that takes a fair amount of time, that’s enough for today!

 

Developer Advisory Team – 12.10 contributor feedback

Some of you might remember when Andrew Starr-Bochicchio send out the Developer Advisory Team’s analysis of the feedback new contributors gave us.

I have been working with the Developer Advisory Team since the previous development cycle and we have reached out many new contributors and solicited feedback about our development process and this feedback in our report. It is our hope that it will help drive further discussion about our development processes, tools, and documentation in the lead up to UDS and over the course of the next cycle.

Attracting new developers and maintaining our ever welcoming environment is an important task for the project. Both new contributors and existing developers are encouraged to discuss their interpretations of the report as well as any other feedback they might want to share about their experience with Ubuntu development.

The full text is available below. You can also get the report as a PDF.

Also if you are interested in helping out the Developer Advisory Team, please get in touch.

New Contributor Feedback - 12.04

The Ubuntu Developer Advisory Team
developer-advisory-team at lists.ubuntu.com

Number of people we reached out to: 66
Got feedback from: 29
Response Rate: 43.93%

Topics

Total Mentions

Positive

Improvement Needed/Criticism

Tools & Infrastructure 15 8 7
Processes 9 4 5
Documentation 10 6 4
Outreach 4 4 0
People 19 18 1


Report

In the 12.10 cycle the Developer Advisory Team reached out to 66 contributors to ask for their feedback. We received feedback from 29 (Response Rate: 43.93%). This does not include many other conversations we are involved in, for example when we help contributors with their development application.  The general tone of the feedback was positive and we received quite a number of ideas for how we can improve our development workflow.

Current members of the Developer Advisory Team are: Andrea Colangelo, Andrew Starr-Bochcchio, Barneedhar Vigneshwar, Bhavani Shankar, Christophe Sauthier, Daniel Holbach, Evan Broder and Vibhav Pant.

Tools & Infrastructure

The vast majority of contributors who mentioned tools and infrastructure generally enjoy using Bazaar and Launchpad. Especially the tight integration between Bazaar and Launchpad and the straight-forward process were noted as advantages. PPAs, daily builds, translations integration and many other things were also mentioned in a positive light.

As points for improvement the learning curve, the amount of different options and tools and Launchpad-git integration were quoted.

  • The thing is Bzr-only in Launchpad – I would really like to have git as an option too
  • Launchpad is a pain to get working initially, and there’s really a whole lot of stuff to read up on first before things become useful.
  • would try to reduce the number of tools available because sometime it’s disorienting when you have to choice things and both have pro and cons.
  • Even though I’m more of a git fan personally, bzr’s integration
    with launchpad makes contributions very easy and very fun. For instance
    unity or compiz – you pick up a bug, prepare a branch, request a merge
    and wait for reviews. Easy.
  • Pushing to launchpad can trigger builds, review, merges, … That’s quite amazing stuff which helps a lot in building and managing a whole distribution.
  • The tools, while occasionally cryptic and unpolished, make development
    easier, faster and even fun once you get the hang of them.
  • In general, I like the development process and the tools (from build systems to online services) are very easy to use.
  • It’s not always clear which launchpad service is the right one to use. E.g. on a blueprint, if I want to offer a comment, should I edit the whiteboard,
    or pick a relevant name to email? Or is there somewhere a discussion
    feature associated with it?
  • The features provided by Launchpad are also interesting.
  • Launchpad environment which integrates all the development workflow; I can quickly and easily checkout sources of any package, commit a patch, link it to a  bug report, ask for a review/merge, manage the translation, build a package and push it into a PPA, etc. That’s just amazing..
  • It was quite easy to create the branch and pushing it to launchpad as everything needed is explained by launchpad (where to push, how to push etc.).
  • Also, it would be very good to have a much easier way to submit bugs related to a               ppa. Currently, they end up being emails sent to me. Having more visibility, would help the user and me.
  • Launchpad could be slightly improved (speeding it up, fixing some annoying bugs like pad.lv/523989, adding some markup options, etc).
  • I liked the automation that you accomplished using launchpad and bzr.
  • like the development process and the tools (from build systems to online services) are very easy to use
  • Bzr and  Launchpad are very effective and make collaboration and peer feedback nearly painless.


Processes

Processes in general were mentioned less as part of the feedback, the only improvements contributors requested were doing the follow more easily: getting in touch with package maintainers, finding out what needs doing, getting new packages into Debian/Ubuntu, quicker sponsoring and more stable release fixes. Our processes got some good feedback as well.

  • I am very satisfied with the helpfulness of the community, and I have never had any negative interactions based on any work that I have done. All of the comments from uploaders or reviewers of my work have been constructive, and this really helps one learn and remain motivated.
  • It would be nice if people doing bug triage got in touch with the package maintainer as well – sometimes some of the questions which get asked of bug submitters by bug triagers could be more useful with prior input from the maintainer.
  • The only part I feel that can be improved is the way I have to find packages that I have interest in helping.
  • Debian seems to have an enormous barrier to entry for getting new packages accepted into the archive. And unfortunately this is described as the easiest way to get new packages into Ubuntu!
  • Generally once a release has been released not too much care is giving to it – sure, there’s an occasional sru, but for the rest it’s ignored”
  • I think it’s important for new contributors to see their work go into Ubuntu more quickly, the only thing that I think it should be improved is sponsoring, It takes some time to get someone work reviewed and uploaded to Ubuntu.
  • Anyone can jump on a bug, submit a fix for it, and have it accepted into the archive.
  • The most exciting things about being involved in  development have most definitely been the UDS’s.





        

Documentation

The Documentation which has been a helpful resource for all new contributors. The improved developer portal (developer.ubuntu.com) provides useful tutorials like the packaging guide which have immensely helped contributors. The vast majority of replies mention it in a very positive light. The outreach and bug fixing initiatives were mentioned as great entry points as well. However, a contributor mentioned that too much documentation on our wiki is confusing, another contributor mentioned that the Ubuntu wiki could be more structured.

  • Generally, the wiki is really helpful here, especially with routine tasks such sponsorship for uploading (eg: https://wiki.ubuntu.com/SponsorshipProcess). At this point I can’t think of any easy way of improving this issue. However, a quick lookup page that lists all of Ubuntu development / packaging tasks are that links to existing documentation might be useful. However, I have always managed to look up what I have needed to find quickly with the various search tools.
  • What I think can be improved is the way the wiki is structured (or at least some of the pages on it). It looks like it contains all the information that is needed. But sometimes I just can’t find what I am looking for and I have to go to google or ask on irc.
  • Documentation can always being improved.
  • The guys behind introducing new people to Ubuntu development have made it very easy for them to start contributing to Ubuntu, there is a lot of good documentation, a lot of training sessions on irc on http://ubuntuonair.com/ nowadays no one should be afraid of contributing to Ubuntu.
  • There is a ton of great documentation, perhaps too much?
  • With the availability of great documentation made by Ubuntu developers, setting up my environment to start with Ubuntu development wasn’t difficult at all for me.
  • There is a vast amount of  knowledge in forms, wikis and how-to’s.
  • The documentation and examples on how to make an SRU turned out to be less helpful than hoped, so I made a few beginner’s mistakes that could have been avoided.
  • I really like the fact that I got quick feedback to my contributions. One thing that is really important for me is the bug fixing initiative wiki page and the fact that lately it seems to be updated regularly.
  • The community is also very helpful and there is a vast amount of knowledge in forms, wikis and how-to’s.




Outreach & People

We should take pride in the great feedback we received. Our processes, tools and documentation seem to work great for almost all our contributors. One thing we should be especially proud of is us as a community. Read the replies below: everybody seems to love working together with us. We received  overwhelmingly positive feedback on fantastic help our developer community provides. More than majority of the contributors mentioned of our ever welcoming and helpful developers. A contributor writes “The fact that actually someone took the time to review my patches, understand them, comment them and push them to ubuntu is great”.
The #ubuntu-motu and #ubuntu-devel IRC channels have proved to be an indispensable resource for new contributors. Like one contributor said, “I have asked a simple question about packaging on IRC and in addition to the response, I have received a complete review of my packaging, with a clear list of all mistakes and what can be improved. I have appreciated a lot the discussion which was very friendly and helpful even if I was a total beginner 2 years ago”, the developer community has always been an important factor in guiding new contributors through development in Ubuntu. A welcoming community it’s still one of Ubuntu’s proudest assets.

  • Thank you, it is great to have ones work noticed!!
  • it is really awesome to receive feedback like this when you don’t expect it!
  • I really appreciate being contacted personally, it gives the impression that Ubuntu is a friendly and welcoming community.
  • People are very friendly and welcoming and vibrant.
  • The people that assisted me were helpful and encouraging.
  • from time to time people are unresponsive and you have to wait until someone else comes along.
  • My experience has been very positive, the ubuntu community it’s a very welcoming place and being a known member before starting the work with the packaging helped me a lot.
  • The community is really really helpful in all work I’ve been doing – it’s really easy to get information when there is a problem.
  • Community is always very responsive and all my questions are getting answered very quickly.
  • Everyone helps as much as possible, I really like that. Not only Canonical employees  I mean the community as a whole. That’s excellent.
  • The people helping me put everything in order so that didn’t turn out to be a big issue.
  • So in perspective, Ubuntu got much friendlier, not only from a technical perspective, but also from an interaction level between requests and actual action.
  • “Mentoring moments”; when a “developer proper” takes time to guide one though a particular process (e.g. fixing  a bug) is something I find extremely valuable an motivating.
  • I have asked a simple question about packaging on IRC and in addition to the response, I have received a complete review of my packaging, with a clear list of all mistakes and what can be improved. I have appreciated a lot the discussion which was very friendly and helpful even if I was a total beginner 2 years ago.
  • I felt a bit lost at the beginning because it was something I never did before, but had good advice and help from other members who pointed me to the wiki pages, explaining the process of pushing the changes to launchpad and submitting them to review for merge.
  • The fact that actually someone took the time to review my patches, understand them, comment them and push them to ubuntu is great because feels like the work you’ve been doing could benefit other people as well
  • Thankfully, the people helping me put everything in order so that didn’t turn out to be a big issue.
  • I’ve known lots of people in the Ubuntu team, that have helped me a lot, and I’ve             learned all that I know from them, this is the most positive thing.
  • All I’ve found a bit discouraging is the reliance on IRC participation; for example, at one point I’d prepared a package for REVU, but never managed to get anyone to look at it because I couldn’t be on IRC at the appropriate time.
  • People (in the BugSquad, I did not talk to much other Ubuntu people) are friendly and helpful. (Newbie) questions are answered nicely, all in order to help one out and learn how Ubuntu development works.
  • People were very friendly and helpful.
  • Each time I interact on IRC or Launchpad, I have the same feeling, the communication is always smooth.
  • For a Debian maintainer, working in Ubuntu is very straightforward.I’ve never had much trouble getting sync requests approved, and in the more complex cases I’ve encountered (bootstrapping gcc-mingw-w64 in particular) other developers at home in Debian and Ubuntu have given me a hand.
  • The feedback feels quite constructive.
  • For the bulk of the work I’ve done so far, I’ve had a mentor (who was basically assigned to me). Someone who’s been able to walk me through the dark arts of packaging and answer most of my questions when  necessary. I suspect this is atypical of others who are just getting started with Ubuntu development. I consider myself lucky

Highlights

Here are the highlights the Developer Advisory Team received in their inboxes. Totally worth a read!

  • There’s a certain amount of satisfaction one can get out of writing software used by millions of people.
  • My experience working with Ubuntu has been overwhelmingly positive so far.
  • Thanks a lot for your review and the work you do to. Thats the kind of work needed to get more people easily involved in development of a complex operating system like Ubuntu!
  • It was the best experience I had in contributing to a linux distro.
  • It is a great platform to develop for.
  • My impression, not sure if I’m right or not, is that Ubuntu is very meritocratic, anyone can jump on a bug, submit a fix for it, and have it accepted into the archive
  • Contributing to Ubuntu is great beside knowing that your work is used by a lot of people around the glob makes you feel good, you’re going to learn a lot of exciting new stuff like how your favorite OS works, how open source development works, you’re going to have new friends, and of course you’re going to have a lot of fun.
  • I like that everybody can fix bugs and add new features to software he uses.
  • I really do enjoy Ubuntu development, and love being able to create changes / fix bugs that help everyone else.

Conclusions

The goal of the Ubuntu Developer Advisory Team is to reach out to new contributors. Over the course of the 12.10 development cycle, the team contacted many first time contributors offering our thanks for their work which helps to make Ubuntu better for millions of users. We also seek to identify stumbling blocks that might make participating in Ubuntu development be harder than it should.

The Developer Advisory Team contacted the new contributors and solicited feedback on their experience with Ubuntu development. We asked three open ended question:

  • What was your general experience with Ubuntu development like?
  • What did you like about it?
  • What do you feel could be improved?


The responses we received fell into five broad categories:

  • Tools & Infrastructure
  • Processes
  • Documentation
  • Outreach
  • People

We reached out to 66 new contributors in total. Of these,   29 gave us their feedback on Ubuntu development, giving us a 43.93% response rate.

My interview with Andy Woodhead, aka ActionParsnip.

Most of you who have seeked support for Ubuntu in IRC must have heard of Andy Woodhead aka ActionParsnip. Andy has been known for helping many people in parallel (see http://irclogs.ubuntu.com/2009/04/11/%23ubuntu.html) and is also known for his entry phase “Yo yo yo”. On 23rd July 2010 Andy was the 3rd highest contributor on Launchpad as a whole and have the highest Karma in the questions section being the first to beach the 100000 mark with 166739 karma points (https://launchpad.net/ubuntu/+topcontributors). He has been an Ubuntu Memeber since 4th November 2011 and is usually available on IRC at irc.freenode.net in the channels: #ubuntu and #ubuntu-uk.

Me: So, tell me a little about yourself.

Andy: I’m a 31 year old NOC engineer, I’ve used Linux since 2001 starting with Mandrake Linux which then turned into Mandriva.

Me: How were you introduced to Ubuntu and Ubuntu contribution?

Andy: I heard about Ubuntu and thought I’d give it a try. Started with Kubuntu Gutsy (as Mandrake uses KDE) was ok and the OS seemed ok so I switched. Through searching te web for guides I found the forums and launchpad quite easily as well as the IRC channels. I started helping out and it kinda went from there.

Me: Why did you choose to contribute to the Ubuntu Community?

Andy: I contribute to make the community stronger. People knowing more will enable THEM to help others and they will, in turn, help others. Making Ubuntu better and in turn making Linux stronger. Many users often go to other distros but much of the knowledge is transferable (especially command line stuff) so it makes those distributions stronger too. I personally have few Ubuntu issues as my needs are simple and my hardware is bought to be super compatible so I have no issues. So I learn the OS by helping others.

Me: Except providing support, are there any ways you contribute to Ubuntu?

Andy: I report bugs, which I think everyone should do, otherwise no. All I do is support.

Me:What are your views about the current status of the Ubuntu Community?

The community is pretty decent. Users need to do more searching though. When an new term is presented to them then immediately ask “what is that” or similar, rather than using initiative and researching. The support in IRC, Launchpad and ubuntuforums etc etc is getting a LOT better. Sites like omgubuntu are also a great source of how-tos and news too

Me: What would you like to see improved in Ubuntu Community?

Andy: People using initiative, people being more adventurous. Yes Ubuntu is aimed at new Linux users (primarily) but users need to realise that learning about their OS a little bit is a good thing and make their lives easier.

Me: What do you do in your free time (when you are not contributing to Ubuntu)?

Andy: Drink, rock out, travel, get tattoos and piercing and drawing. Researching technology a little and then working which pretty much kills 4 days of 8 (I work European shifts). Just exploring the world and seeing what it can do.

Me: Except Ubuntu, do you contribute to any other project ?

Andy: I contribute to projects which make up Ubuntu, like Open/Libreoffice as well as Lubuntu. Stuff like that.