Library feedback - for C++ - c++11

I've written a new library, with an idea in it which I feel is fairly original. I'm looking for general feedback on it, and decided that I could submit to Boost- regardless of if it's rejected or accepted, I'd get some feedback. But I've checked the Boost site and it's seriously arcane, the whole mailing list thing is completely impenetrable.
Are there other library aggregation sites to submit to, or is it just Boost?

reddit.com/r/programming may be a good place to get some feedback.

You could post to any of a myriad of open-source hosting sites -- see this other question for recommendations:
https://stackoverflow.com/questions/10490/best-open-source-project-hosting-site

Related

Mozilla Firefox resource for bug reports and suggestions

I use Firefox for about 90% of my overall browser usage experience and periodically discover bugs or strangeness in work, also from time to time I have suggestions for improvement.
So I think that it's useful for Firefox community to know about potential or actual problems. Is there such resource to create quick reports (I'm at work, for example, and haven't enough time for advanced conversations)? What is the easiest way to report bugs and suggest some new ideas? May be there is some addon for this purpose?
Thanks in advance.
Good question! Depending on the problem you are seeing, there are different strategies for efficiently reporting the issue. Efficiency in this case means the reduction of the time that passes from your report to actually get somebody to take a look at it (and then decide what's next).
Here's a set of ways you can use to get in touch with the community (disclaimer: I'm part of it):
Bugzilla: it's the one stop place for reporting bugs for Firefox. I know it's a bit cryptic at first, and there are plans to improve the bug reporting workflow. There's a comprehensive article on MDN that explains how to write a good bug report that's actually helpful. Don't get mislead by the word "bug": Bugzilla is also used to track the development workflow and discuss enhancements.
webcompat.com: if you're having problems with a particular website that doesn't get rendered properly, you could still write a bug report in Bugzilla. However, the webcompat website (still supported by Mozilla) is more suited for this kind of things. It also features a downloadable Firefox addon to speed up filing website compatibility issues.
Github: some components (Testpilot, ...) live on Github rather than in the central Mozilla repository. If you're experiencing issues with them, you could file an issue on the github page for the specific project.
irc.mozilla.org: (discontinued) this chat server allows to get in touch in real-time with the Mozilla community. There are several channels you can hang out in, even using a web-based IRC client. People are usually very willing to help. This is not the best place to report problems, but still a good place to raise awareness about your bug if it doesn't get triaged (i.e. assigned a priority and discussed) within a week or so.
chat.mozilla.org: as of May 2020, this replaced IRC and is the new recommended mechanism for synchronous communications. See the related wiki.
I know that's a lot of info, but it's easier than you think! If you feel like you don't know where to file bugs, just go to Bugzilla. Please do not hesitate to ask if you need more help and.. cheers for willing to report bugs!
Updated May 2020: Added Matrix and marked IRC as discontinued.

How to get involved in development of Mozilla Firefox?

I am a CS grad student, and I am interested in spending some spare time in getting involved with development of Mozilla Firefox web browser . I would like to contribute to HTML renderer , JavaScript engine etc. But I don't have any solid experience in writing parsers or similar stuff, and I don't have any clue from where to start.
There are of course some links in https://developer.mozilla.org/En/Developer_Guide/ but since Firefox is already is very huge project, I don't know from where I should start learning.
So, my question is what core things I need to learn first to get started with Web browser Development and from where I can learn this (any links)? Do I have to revise how to write parsers/compilers? How do I learn to write HTML renderer/ JavaScript engine? Is it even possible considering they are already very huge projects? Sometime back, I downloaded source code of V8 JavaScript engine (http://code.google.com/p/v8/) but I couldn't understand much from it's source code as it was highly optimized code, and there were no much useful comments for beginner like me to understand what going on.
Update:
I am fairly comfortable working with C, C++, Java, PHP, C#, VB.Net, JavaScript and I am more interested in learning how web browser parses an web page, how it constructs and maintains the DOM, how CSS is applied, how HTML reflow engine works, how it interacts with JavaScript engine, how it interacts with web server, how the components are drawn on the screen etc.
Read the docs on getting started. Hang out on irc.mozilla.org in #developers and watch for interesting conversations. Introduce yourself in #introduction and ask questions. Go to http://bugzilla.mozilla.org and start searching for open bugs in components that sound interesting, then look for bugs that catch your fancy. Use tools like http://mxr.mozilla.org/ and http://dxr.mozilla.org to help you locate the relevant code, and ask questions in #developers. Learn, hack, repeat.
I wrote a post about my experiences getting involved over the past year, and it seems to reflect the path that a significant amount of Mozilla developers took.
You might want to review a list of known bugs and see if you're able to fix them. Other possible way to get a foot in the door is to get involved in quality assurance tasks, which would help you learn better internals of the application.
Bugs marked in Bugzilla with the [good first bug] whiteboard status are a good place to start. You can view the list here.
Find something you like and try to fix it! The developers on IRC (#developers in irc.mozilla.org) are usually happy to help when you get stuck.
If you are interested in parsing, learn finite state automata and formal gramars, it should be part of your CS curriculum at some point, like in a compilers class. For the javascript part, study about JIT compilers, specially on how a tracing JIT works. Follow Mozilla development blogs, here is a good starting article:
http://hacks.mozilla.org/2010/03/a-quick-note-on-javascript-engine-components/
Finally, but not least importantly, try to contact people already working there, and try to build a mentor-pupil relationship, they can assign you tasks and can help if you get stuck when working on the code. Going to opensource conferences is a great way to meet the people behind a project and get started contributing.
Mozilla Developer Guide

Is there a website to look up common, already written functions?

I'm sitting here writing a function that I'm positive has been written before, somewhere on earth. It's just too common to have not been attempted, and I'm wondering why I can't just go to a website and search for a function that I can then copy and paste into my project in 2 seconds, instead of wasting my day reinventing the wheel.
Sure there are certain libraries you can use, but where do you find these libraries and when they are absent, is there a site like I'm describing?
Possibly a wiki of some type that contains free code that anybody can edit and improve?
Edit: I can code things fine, I just don't know HOW to do them. So for example, right now, I'm trying to localize a robot/car/point in space. I KNOW there is a way to do it, just based off of range and distance. Triangulation and Trilateration. How to code that is a different story. A site that could have psuedo code, step by step how to do that would be ridiculously helpful. It would also ensure the optimal solution since everybody can edit it. I'm also writing in Matlab, which I hate because it's quirky, adding to my desire for creating a website like I describe.
StackOverflow.com. No, I'm not joking.
At its best, people come here saying "hasn't some library done X already", and very often the Collective Wisdom answers "yes". But the biggest obstacle is lack of a description language: even here, a big problem for many posters is describing the problem clearly enough for others to recognize it as something they've seen before.
And if people can't understand what you're trying to do, no search engine will.
Firstly, two caveats:
Copy and pasting code you don't understand is a bad idea. Make sure you understand exactly what the code does before you use it.
Make sure you respect the license of the code you are copying. This is important!
Those caveats aside, it's often language dependent. Languages with an open development ethos (not just an open source implementation, think Python as compared to Java) tend to have official archives of open source libraries. For example:
Perl (which probably started this trend) has CPAN
Python has PyPI and Python Cookbook
PHP has PEAR
C++ has boost
Ruby has gems
R has CRAN.
Haskell has Hoogle and Hackage
Furthermore, don't forget to look in your languages standard library. Some modern languages have massive standard libraries, which have often contained the functionality I am looking for:
Java has its API documentation
C# and VB.NET have the massive MSDN
Non-openly developed languages often have non-official community archives. For example:
C# tends to have a lot of code at CodePlex and CodeProject
MATLAB has the Matlab Central File Exchange
A third category of sites are language agnostic. They are often best search through POG (plain old-fashioned Google). For example:
Stack Overflow
SourceForge
The confusingly language agnostic Java2s
Planet source code
Github
Finally, a fourth category of sites that I find increasingly useful are source-code search engines:
Google Codesearch
Koders
You may also be able to find useful source code, or at least get help writing something, through various pastebins.
Pastebin is language-agnostic
HPaste is mostly Haskell, but has a little in other languages.
Often, at the end of the day it is easiest just to google it, though.
There is a wiki that contains free code that anybody can edit and improve:
Rosetta Code.
As a means of an overview there is the "Solutions by Programming Task" page.
From the former page:
"Rosetta Code is a programming chrestomathy site. The
idea is to present solutions to the same task in as
many different languages as possible, to demonstrate
how languages are similar and different, and to aid a
person with a grounding in one approach to a problem
in learning another."
Cutting and pasting code you find on the Internet into production code would be like chewing gum found in the street. - Mike Johnson
With that in mind, try sites that host opensource projects like GitHub, CodePlex, code.google.com, etc.
I'm not sure this question is language agnostic, but I use GitHub this way ;) Other languages may have places where this is possible.
Safari Bookshelf from O'Reilly has many, many books that contain many implementations from which to choose.
http://my.safaribooksonline.com/
I was a subscriber for a few years before coming to my current job, where we have a corporate account! It's one of the best perks, and one of the best resources I have available. I haven't bought a computer book in years.
Aside from sites like this (Stack Overflow) I don't think there's many, maybe CodePlex, but I almost marked you -1 for assuming that code found on the Internet is yours to copy.
I'd suggest reading about software licencing, I hope you'd at least comment where you got it from.

Keeping abreast with technology

I know this is not a technical question, but this is something I believe could be best answered by the technology community. I've been in software development for ~2 years now, but most of the time, it has been a learn as is needed experience. I was recently asked by a friend on how to go about getting a strong foothold on technology so as to be able to easily adapt to new technology that comes up every day.
I'm not sure how to answer his question as my way of approaching this situation has been learn as you need. How would you suggest someone proceed if they were getting into Microsoft technologies today? Where would they start, and how would they proceed? To be able to expand their knowledge to the new advances we see everyday (linq, silverlight, entity framework, mvc framework and the ever expanding list).
Basically I think my question is a mix of both "how to be a better programmer" and how to get to the "next level" in technology (where you are no longer an intermediate programmer, but able to see the whole picture and easily assimilate new technology)
Thanks in advance.
One thing I enjoy is to listen to technology podcasts while I commute, exercise or do household work. You will net become an expert alone by listening to podcasts, but you will get a lot of input. In particular I enjoy .NET Rocks! but Stack Overflow also has a podcast to name a few.
Read, do and try new things. Do that for a few years you'll eventually end up an experienced programmer.
I think this post by the Misfit Geek could help you out a bit. I think it gives some great tips and gives some good advice on how a respected technologist has stayed up on technology.
How did you learn what you know
Hope these help. I also agree that podcast are a great source of info, at least to point you to the best new technologies. I listen to .Net Rocks, Hanselminutes, HerdingCode, and DeepFriedBytes just to name a few. I also follow some good .net releated blogs such as CodeBetter, Devlicio.us, and Los Techies.
Good luck!
I spend at least 1 hour a day just reading blogs, and listening to podcasts. You cant possibly get involved in everything new that comes along, but having knowledge of what's new is just as important as trying new things out.
If you want to specialise in one thing, then that's fine, but always try to include new technologies into your projects, and look for better solutions to things you have done in the past.
You need to follow what the technical community is interested in. Blogs are the best way that I've found to do this. Pick at least 50 that cover a wide range of topics, and you'll know what is coming down the pipe.
Keep involved in podcasts and blogs. Set aside at least 15 minutes a day to ready them or listen to them. Take their ideas, find which ones apply to you or are interested and add it to your personal development plan to learn them.
Here are a few previous posts regarding these:
Podcasts
OR
c# blogs
Interesting project + new technology = motivated learning.
There is no alternative to getting your hands dirty. Take one of the ideas you've had rolling around in your head and implement it using buzzword technologies. Be prepared to realize many hyped technologies are mostly just hype. Hopefully you will find some real gems, change your perceptions of what is possible, and add some tools to your toolbox all while achieving a goal.
Here's the list of Top 200 blogs for software developers. Try to read some of them and subscribe to what you like or find useful.
Blogs are great for spotting trends and finding some advice about the newest technologies, but if you want to learn something in-depth, you need books. Try to read 3 or 4 every year.
Finally, local user groups. Find and meet your fellow developers face-to-face and find out what they're doing and what's on their minds.
Attend meetings of local user groups.

Setting up a Bulletin Board

I want to add a "Community" section (Bulletin Board) to my website so everyone can communicate, but I don't know what I'm doing.
How would I go about adding this and which one offers the most documentation and support?
Whatever you do, make certain that you read the instructions on configuring your discussion software to protect you and your community for the worst parts of the internet: spam, spoofing, and abuse.
Make certain that you immediately change the admin password from the one that comes with the installation.
If you leave your communities wide open to all kinds of posting, harvesting, and general mis-use, you'll spend your days playing whack-a-mole with thousands of idiots. Develop your acceptable use policy, configure your boards to support it, then enforce it.
And if the software you are looking at doesn't support things like e-mail verification, moderation, abuse reporting, anti-spamming controls, etc., just keep looking.
Be prepared to spend time managing your community so that it doesn't become another one of the millions of web forums out there full of off topic posts that drive people away from your website.
I think what you needed is a forum software, there are tones of free and open source ones available on the net. DotNetNuke is a .NET one but can be expensive to host and phpBB is another popular choice and there are a lot of cheap hosting solutions.
is your site based on php/mysql or asp/sql? Chances are if you do not know where to even find tables, that you are not able to what you actually want.
HOWEVER, if it's php/mysql, i recommend Cool Php Scripts book. It covers creating sort of a community forum/message board.
As i said again, you are probably not going to do it alone, at least, without a long frustrating learning curve.
You can always post a job and someone would be more than willing to bid on it at elance or rentacoder or any other site of your choice
Wikipedia has a big honking list of forum software. Pick the one that best matches the programming language(s) you're familiar with, the features you need, etc.
This is what you need.
Edit: They don't offer a hosted version there. You can use this instead. It's hosted on it's own site, free, and doesn't require a download.
I find Vanilla to be a much better forum application that phpBB for reasons of aesthetics as well as extensibility. I have not seen/used it in a situation where many sub-forums were required, so depending on your scope it may not be the right choice, but for small-to-medium sized forums I'd suggest trying it first.
First, you need to choose a forum software that matchs your requirements.
Then, just follow the Installation Guide provided by the software you have choosen.
More information at Forum Software Reviews

Resources