Your experience with LibSourcey - c++11

Just came across libsourcey when Googling libuv. It looks very featureful, but I haven't been able to find any solid reviews or benchmarks (in fact, this seems to be the first post here on stack overflow concerning LibSourcey.)
Has anybody yet to have any experience with this framework?

Thanks for your interest in LibSourcey! As the maintainer I can say the library is still under active development. There are a number of startups that currently use it in their proprietary code - and maybe some open source code too - so it will continue to be developed and will always remain open source.
Since it was open sourced in '14 it hasn't gained a huge amount of open source adoption, probably since it was never advertised there are already some great alternatives such as boost, but hopefully the power of modern stl and libuv will attract more developers over time.
I'll personally be happy to answer any questions regarding LibSourcey.

Related

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.

Best way to manage projects [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
What is a best way to organize many software development projects, interaction with clients, project documentation, sources, emails, knowledge, time tracking, issue and features tracking, support for releases and versions etc. for a small company?
For me (and I believe for many others) it is obvious that it must be some sort of web-based solutions. It would be great if it could provide an interface for iPhone (if not, it is also OK).
Important thing: it must be hosted on our servers, so PHP + MySQL is the best platform so far.
I have found the following system to consider:
http://www.activecollab.com/ (but I didn't found issue tracking as well as support for releases and versions, so it is not the best match for software development company)
http://www.mantisbt.org/ (Great tool, but no project planing...)
http://www.twproject.com/ (didn't try yet, but it has very strange interface)
But none of them is a 100% solution for me.
It also should (but not must) support SCRUM
We have about 25 people in our team and about 50 from client side. At once we run about 3-7 projects (some in dev. phase, some in support).
So, my questions: does anybody knows any good web-based system that gives everything software development company needs? I believe this information will be useful for many of us.
I would recommend FogBugz
They have a very interesting (admittedly not everyone's cup of tea) scheduling system and is apparently supporting scrum.
Their support for release management is something i'm particularly fond of, but i should also say that i have very little experience of other similar systems.
Another feature that I like is the ability to link different e-mail accounts as well as pure HTML forms to different projects.
Oh, and it is not a MySQL/PHP solution.
Some of the features are:
Issue tracking
Project planning
Scheduling
Customer support
Wiki
References:
Scrum and Fogbugz / Fogbugz questions / FogBugz Knowledge Exchange
I think it really depends on your company size. I used activecollab for a while but it never really convinced me and then they made it commercial anyway. There is an open source fork of it called ProjectPier.
Even if it is not MySQL + PHP but Ruby On Rails Redmine convinced me the most from all tools I tried (and installing the ruby module into apache is a question of 5 minutes). It is simpel and yet has anything I need (including Eclipse Mylyn, SCM integration, E-Mail Notification and time tracking). With a little RoR knowledge it is easily customizable, too.
The most popular Open Source sollution is probably Trac. It is written in Python, so it is not a PHP either.
But maybe it makes sense to consider a non PHP sollution. I didn't find any PHP open source tool that had the functionality and simplicity of Redmine or Trac. If you don't mind a hosted sollution Basecamp is probably the first address to turn to (never tried it though).
Trac with Agilo plugin might be a good option.
Here is link for Trac pluigns, some category are:
Code Documentation
User feedback and discussions
For another pespective - having used many of the above solutions, and liking them very much for bug tracking, wiki documentation and tracking information - I tend to move towards keeping much of my project "meta-data" (summary information pulling together wiki, bugs, schedules, communication) in spreadsheets now.
For those now climbing onto the top rope of the ring preparing for a takedown, here's why... I come from a programming background, and one of the best books I read early in my career was The Pragmatic Programmer. One of the tenets they preach is finding a fundamental editor that you like, and get good with it (for various Very Good Reasons). After trying (frustratingly) to port and adapt my PM/Dev Management approach multiple times to multiple systems, I've extrapolated that Pragmatic tooling philosophy to the product/project management world I now inhabit. To stretch the metaphor, my editor is now Excel.
I can't guarantee that for any company I work with, they have "Software Project Management xyz" or "Bug Tracking System abc" with the proper plugins - but I can be darn well sure they have Excel or some variant available. I know if I get ninja-like with that tool, I can continue to use it - and focus on the project, not the tools.
This spreadsheet approach comes with some caveats:
Excel done poorly can suck. We've all seen that. Watch for bloat and stupidity.
Keep the bugs in the bug tracking system, the wiki stuff in the wiki. The spreadsheet is meant to pull this stuff together, not replace it.
Keep it readable. Don't stuff everything in just because you can. Summary sheets are good.
Try to standardize your templates and macros meaningfully for tasks and information, to maximize reuse over time and projects. Just like good programming.
Back it up - use a document management system if you can. This approach isn't in the cloud or hosted centrally by default, so be aware of that.
Have you tried Assembla? They've recently released a new product called Portfolio which is great if you have to manage multiple projects + you get free clients! :)
You might like to consider http://targetprocess.com/ We use that in my current job and it works pretty well, from a developer point of view. I'm unsure as to whether it supports your installation requirements, however.

Doomed technologies? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 14 years ago.
Improve this question
What technologies/languages/applications do you think have hit their peak on Windows platforms, those that are or should be slated for obsolescence? My votes, might be wishful thinking in some regards:
VBScript
Microsoft Access
ODBC
Flash
I ask because we are in the process of setting future directions for technologies and application development, i.e. don't use these unless there is no choice.
I think Windows has peaked in general. The latest version of Windows, Vista was viewed negatively across the USA, there are numerous examples of major organizations in Europe and Africa phasing out their use of MS Windows in favor of Linux, and all of this has come to great benefit of the Linux vigilante's. The worst part is that Microsoft employees some of the smartest people in the computer industry but are usually screwed over by Marketing people.
I expect I'm going to get hard in down rank points for this answer, but I figure its worth it. As a senior/lead developer I wish I could use a couple Microsoft technologies but I'm afraid of pulling my company under the Microsoft tax of existence, so that biases me to toward a company that had a big role in getting me into programming ( Apple Basic, then MS Basic, and then c++ with the win32 API in the late 90's ) which is disappointing.
I think that MS Access is not a dead technology/product. However the legacy 'Jet Database Engine' that is often associated with Access is definitely in obsolescence mode. I dont; think MS has released a 64-bit Jet Engine (I know they intended not to, but wouldn't be surprised if demand made them change their minds). Also the Jet Engine is no longer part of MDAC.
MS wants the future of Access database engines to be an SQL Express/SQL Compact/MSDE type of engine.
I really don't think Flash is doomed .. I'd bet on its future over Silverlight's right now
Not sure why Access is in your list. Still used heavily and a good choice for small scale DB.
Here is what I think MS wants to kill... whether it happens or not is a different story.
WinForms
VB6
C++ (for desktop apps)
IMHO Classic ASP (as opposed to ASP.Net) and Visual Basic (again, as opposed to Visual Basic.Net)?
In all honestly, I really think that anything which has the ability to make this list won't ever be doomed. It's really really hard to retire a technology. Look at COBOL. Everyone says that COBOL has met it's end of days and has been saying that for years and lo and behold, people still program in it, and there are a multitude of production systems running it.
He's another example, my first job out of college was a heavy Delphi shop. No VB and MS technologies are evil. It was clear that everyone in my area and most people around the U.S. were dropping it in favor of Visual Basic, or something more powerful like C++. I swore up and down Delphi was a dead technology and that Borland was going down the drain. That being said, it's clearly in use today. I was wrong. Popular technologies will never really die, or become obsolete, because of their ability to change and because people depend on system which are currently working (look at FORTRAN, I know of some physicists which still use programs written in it). Once a language/system gains popularity, there will always be a need for someone who knows it, and this means that there will always be a need for someone to improve. There are a lot of technologies that die, but that is because they were never popular enough to begin with.
Of the list that you gave, I would say maybe ODBC could be the one phased out, but with other legacy technologies, I think it is going to be a long time. You could maybe argue VB6 is going to be done away with, but I think it won't be long until someone (not MS) writes a new compiler for it and not necessarily revitalizes it's use, but extends it's life. There's too much written in it for organizations to just throw it away. People argue about things being rewritten, but how often does it successfully happen? The main mentality of people outside of IT is: "don't fix it if it isn't broken." That is going to keep technologies around for a long long time. We can say something is dead, but in reality they all will be around for a long time.
I agree that MS don't support C++ at all well, is this an attempt to create coders who can only write business apps, and therefore don't directly challenge MS themselves?
The other dead in the water is Vista, roll on Windows 7.
By flash do you mean Actionscript or the platform all together?
Flash CS4 has shown some great potential.
Here's a cool feature tour of CS4

Looking for some examples of GUI apps with great design [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I will start developing my next desktop application in about a month. In the past I have delivered functional software that hasn't wowed anyone, including myself, in the usability or aesthetics department.
Does anybody know of any resources or guides or even books that could showcase examples of good design in desktop software?
There seems to be a lot of resources for web apps, but such resources for desktop applications are rather slim.
I enjoyed these dot net rocks tv videos by Mark Miller on The Science of a Great User Experience really got me thinking about good ui:
http://www.dnrtv.com/default.aspx?showNum=112
http://www.dnrtv.com/default.aspx?showNum=123
Where you can really make a difference with GUI design is if you are addressing a difficult to understand concept in a GUI.
When you are doing that, creativity is critical. When dealing with complex hardware configurations (something I had to do a lot, but probably doesn't apply to you), I've had good luck going to tech manuals and tech support people and trying to completely understand the problem. Then I took the methods they used to show me (diagrams from the manuals, whiteboard drawings, etc) and tried to code them into a GUI.
Had a couple massive successes with this.
Iteration is also critical. Prototype something quickly then beg everyone you see to try it. Ask them to solve a problem, then watch where they go first and watch what they have problems with.
Address every problem and stumbling block.
Don't be afraid to throw it all away and start over, it was only prototype code.
Separate your GUI from your implementation so that you can swap out the GUI if you find a better approach.
If you want to concentrate on just one feature, have a look at ITunes' search box which filters as you type. Other software may have had this before, but this was I think the first place I encountered it.
The difference between this and classic search was an eye opener for me in terms of readability.
Auto-complete which you see in so many places is another one. I'd recommend IntelliJ IDEA for the way it took auto-completion which emacs, Visual studio etc had for ages and added autocompletion for variable names and method names in a manner which almost seemed psychic the first time you encountered it.
You can look at Thirteen23 Experiences
To make things usable, you need to make sure that you follow existing conventions for your target platform and application type.
For example, if you're developing a Windows App you'd better make sure that control-c copies, control-v pastes, control-s saves, etc. The File menu better be the leftmost item in the menu bar, and the Help menu better by the rightmost item.
If you don't follow existing conventions, users are going to get annoyed with your application very quickly.
Google for HIG. Human Interface Guidelines typically include lots of research into best-practice in user interfaces, and explain in great detail how to design each aspect of a program. Also, have a google for "user-interface hall of shame" or something like that.
In this question I mentioned GUI bloopers. Part of great design is knowing what makes bad design and why. It is actually a great book, although I don't know how much of it is available on the website.
You can check case studys on websites of GUI companys. I fund few at www.puzzlehead.com
Check there and also other sites.

great first run experience [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
Does anyone have good examples of software that has a fantastic first run experience? Some software obviously just works "out of the box". However, there is significant software that requires some configuration before it's usable.
Any examples would be much appreciated.
Cheers,
Yi
I was very impressed by Opera the first time I tried it; within a week I switched from Firefox. It comes with a lot of features such as an IRC and Bittorrent client, which is important to me at school, where there is a quota of 50 megs on disk space! Most of Opera's features are eventually available/copied to Firefox as plugins, but I still prefer Opera at home because the text looks better.
Time Machine for Mac OS X 10.5. If you have a Time Capsule, all you do is flick a switch in a control panel to turn it on. When you need a backed-up file you can visually go back to a point in time when you knew it existed. You can browse your hard drive (or just the directories that were backed up at that point in time) as it was in the past to retrieve it, and when you do, you can see it being copied to the present time. Gimmicky, but now I love deleting files just so I can restore them later.
Basecamp has an incredible out-of-the-box experience. This is a result of keeping things extremely simple, having a hosted solution (no install/setup) and also brief but noticeable welcome messages explaining how to get things started.
Some other examples of things that work the first time and work perfectly as soon as you start using them would be TripIt, FogBugz and BlinkSale.
How about the iPhone? Almost all Apple product are shipped with minimal manuals.
Most things from Google are good in that regard. Firefox is alright, as is OpenOffice (albeit a bit slow, but can be tweaked).
I don't think it's possible to answer this question in absolute terms. What's a fantastic "out of the box"/"first run" experience depends on what's the expectation of the person running it. If the product meets or especially exceeds that expectation, that's a great experience.
Here's a simple example. I consider Google Chrome browser to be a great first run experience because it is simple, installs nicely, and is super fast. For some others (especially many reading stackoverflow.com), it might be flawed because their expectation is that Chrome can also seamlessly import their Firefox or whatever other plugins, which was not part of Chrome's original features. So for them, it would not be a great experience because they were expecting something that wasn't there.
Apple, iPod and iTunes are other classic examples. Many people (myself included) consider finding and buying music from iTunes a great easy experience. Many others find it appalling because until recently, the music wasn't (and some of it still isn't) DRM-free.
OS X, Parallels
Windows 7, Vista (somewhat controversial I suspect)
I would say Ubuntu has a good OOB experience. It was a very simple to get installed and running. I've never bothered with the Live CD but I hear that's also great and it's fantastic how that allows you to try Ubuntu without actually having to install it.

Resources