Become a fan of Slashdot on Facebook


Forgot your password?
For the out-of-band Slashdot experience (mostly headlines), follow us on Twitter, or Facebook. ×

Comment: Re:No GPL (Score 2) 140 140

Please do not license it under an L/GPL license. There's a lot of software I would like to use, but am not legally allowed to because it uses a GPL license.

You must be a sociopath then, or work for one.

That's really the only reason to not use something with a copyleft license.

No, another very valid reason not to use copyleft code is because you are developing proprietary software where you do not intend to release the source code. Do you truly believe everyone developing closed source proprietary software is a sociopath? I am not sure even Richard Stallman thinks that, and I thought his was the most extreme opinion in the free software community.

I am developing software that takes use of many open libraries, but only ones that are truly open. This is because I currently intend to release the software with a dual license similar to MySQL. If I can find a way to fund the project another way I will, because I would prefer the software to be completely free, although I don't want to back myself into a corner and limit my options in the future by using GPL code.

Comment: Re: GMOs have so many different problems (Score 1) 187 187

If all failures were paid there would be only successful companies.

While you are likely trolling, no one is suggesting failing companies should be propped up with public money. But successful companies still often have many failed projects, and this is especially true for any company which relies heavily on R&D. Like they say, if you aren't failing you aren't innovating. A solvent company needs to pay for its failed R&D projects with its successful projects or it would go under.

It is very similar to running a VC company. They obviously don't think ever venture will be profitable, but they are hoping to make an overall profit on those 20% of companies that actually succeed.

Comment: Re:Confirmed... I've been hiring. (Score 1) 178 178

You give the verbal offer and *then* do the background & reference checks?

Yeah, I was wondering about that too. WTH?

Hopefully the verdict is in before he gives notice at his old job ...

I assume it takes a month because all of the background checks take two weeks and then they have to wait for the employee to give the current employer a two week notice. That is what happened in a company change I made earlier this year, although it only took a week for the background checks.

Comment: I Doubt it is Statistically Significant (Score 1) 178 178

If you look at the listing of 20 tech positions, the Software Engineer position is a strange outlier. Its 35 day duration is almost 7 days higher than the #2 position, Senior Applications Developer, which is 28.3 days. The rest of the time-to-hire durations group together much nicer, which the overall trend being more senior positions taking longer and entry level positions taking less time.

So the duration for senior level tech positions appears to be around 27-28 days, which is what the summary should have focused on.

Comment: Re:Contradiction ... (Score 1) 295 295

Or does "cross-platform" in this context mean "Linux+Windows"?


Sorry I guess I am a bit too old and still don't think of mobile when I say cross-platform. But not old enough to immediately think embedded when saying cross-platform. I have been living purely in the desktop / server world for over a decade and that is where my project resides as well.

Comment: Re:What else do you need? (Score 2) 295 295

The project is very similar to writing an database management system. I didn't want to get too much into the details so people aren't commenting about the virtues of the project itself.

There is no UI component; it could be thought of as a cloud service.

My perfect solution would be developing it in C# while having complete control over memory allocation and release. I have done extensive testing using System.GC.Collect() to manually control garbage collection with no luck.

I started programming with C++ in high school and began my career with the language so I'm not too worried about moving back to the language, but I realize I am far more competent with higher level languages right now.

Comment: Re:If you cannot answer your own question.. (Score 1) 295 295

Personally, by the sounds of this project, I would probably code it in C# (or Java if that's your thing) and then bind in anything that those languages can't do using the native interface and a small C library (probably easiest to stick with straight C when doing native interop, though you can go C++ if you feel you really need it). For small projects I feel like going full native is rarely going to be worth it.

The only thing stopping me from doing this now is I need the ability to release memory on demand, and System.GC.Collect() is not sufficient. I really wish it was since I would work in C# if it was sufficient, but all prototyping I have done so far has not been successful enough.

Comment: Re:If you cannot answer your own question.. (Score 1) 295 295

Really.. C++ is a relatively high commitment language, and performance is one of its mainstays, however you dont feel you will spend much time optimising it?

I started my career working with C++ so I am not new to the language, but my work used very little of even the standard library let alone other third party tools. I used in house libraries that were already written. I was also a novice at the time, so a good deal of the last few months has been spent reading material like Effective Modern C++ and others in the Effective C++ series, along with a throwaway project to practice while reading.

I am a firm believer that most performance is in the algorithms not the language, so I am definitely not choosing C++ primarily for performance reasons. I need certain aspects like memory management, but my choice is not because I think my algorithms will run faster in C++ vs Java. There will probably be some very important modules I need to optimize, but all of that will likely be long after I have a working prototype.

I had a project a year ago where tokenizing terms needed to be as fast as possible, so I tried creating a C library to do it. I am confident I did it well by not copying memory but just keeping track of the location and length of each word in the existing character array, but I still couldn't match the performance of just doing it simply in LINQ (although it was almost identical performance). There is likely some kind of CPU caching or other tricks I was not doing right, but my point is I understand moving to C++ is not some silver bullet for performance, which is what I meant when I said I wasn't moving to C++ for performance reasons.

If you cannot look quite quickly over the descriptions of Boost/ASIO and see what they do (and dont) bring to the table, then you will be fighting a very
uphill battle.

I can and have read up on Boost::Asio and a little on QT, which is why I know how they would be useful to me in this project. But I am looking for advice from people who have used them extensively and know the gotchas. In my experience it takes a couple years to really know how certain aspects of a framework will affect your project long term and I want to gleam as much insight from the community as possible before I start down a certain path. It may not be possible to learn anything substantial with one Ask Slashdot post, but I figured why not try.

As almost everything else has equal or better cross platform support, it seems to me like you need to look more closely to what you mean/need by
'granularity' and perhaps change your mentality using familiar languages, and the solutions for problems in those areas.

Okay, basically I need to be able to allocate and release memory manually and without waiting for any garbage collection. I need complete control over concurrency and memory sharing, and as little overhead as possible when accessing the hard disk. I have not been able to find a way during prototyping to control memory enough in Java or C#. A language with a great cross platform library but no memory management would be perfect, and right now C++ is the only language I know of that comes close to those requirements.

Comment: Re:Not enough information. (Score 1) 295 295

You haven't provided nearly enough information to make a decision here. You haven't defined what you mean by "granular level", whether you need a UI, what functionality you have to provide.

The project is very similar to writing an database management system. I didn't want to get too much into the details so people aren't commenting about the virtues of the project itself.

By granular level I mean I cannot be in a managed environment like the JVM or .Net JIT compiler. I need to be able to allocate and release memory manually. I have done some prototyping in Java and C# hoping I could control garbage collection enough for my needs, but it isn't possible (or at least I can't figure it out).

There is no UI and it will only communicate via networking. It will also be distributed and concurrency control will be important.

Comment: Re:If you do go with C++ (Score 1) 295 295

There is no UI required for the project, although I realize you can use modules like QtNetwork without the UI libraries. I am a bit worried about tying myself too closely to the QT event loop. Can anyone provide any insight on if the event loop will complicate concurrency throughout the rest of the application or if it is even necessary? I have briefly read through some documentation but I am most looking for advice from someone who has used it before and has dealt with the gotchas that every framework has.

I have leaned more towards trying Boost over QT mostly because it relates closer to the standard library and has less overhead and framework buy in necessary. Or at least that is my impression. Has anyone tried both and have any advice on which they prefer for a project where you don't want to completely drink the framework's Kool-Aid?

+ - Is C++ The Right Tool? 8 8

ranton writes: I am about to start a personal project which I believe should be done in C/C++. The main reasons I have for this are the needs to manage memory usage and disk access at a very granular level and a desire to be cross-platform. Performance is also important but I am unlikely to spend enough time optimizing to be much faster than core libraries of higher level languages.

On the other hand, network access is also a critical part of the project and I am worried about the effort it takes to make cross platform code for both network and disk access. I have been working in the Java / C# world for the past decade and things like TCP/IP and SSL have just been done for me by core libraries. Do libraries like Boost or Asio do a good job of abstracting these aspects away? Or are there other options for doing granular memory and disk management with more high level languages that have better cross-platform library support? I am willing to brush up on my C/C++ skills if necessary but want to spend as much time as possible developing the unique and potentially innovative parts of my project. Thanks for any advice you can provide.

Comment: Re:I Do (Score 2) 380 380

$600 a day? I'm sorry, but nothing is worth that. Your employer is a sucker. Those lowly full time employees you look down your nose at are ultimately the ones paying your extortive rate of pay.

Either that, or you are completely full of shit and just trolling.

You are either very young, in a low paying field, not very good at your job, or live in rural Kentucky if you think $600 per day is extortion. That is not even $100 per hour. I make that as a software developer as an FTE even without including benefits in the midwest in my mid-30's. And my employer is getting a great deal and knows it, which is why I am paid extra for overtime which includes either extra bonus or extra PTO days to compensate. My young daughter and second on the way are what keeps me from taking more risks in my career and probably making much more money (emphasis on "probably").

Come to think of it I am probably just wasting my time here because you are likely just trolling yourself.

Comment: Re:Error Handling (Score 1) 342 342

It is for this reason I despise seeing C/C++ on CVs. It implies that you don't have a strong foundation in either language as idiomatic code is so different between the two.

I actually list C/C++ on my CV purely to imply I am not strong in either. It was my main language in college and I have used it sparingly in my career, but I don't consider myself a C or C++ developer. So if you are looking for a senior C or C++ developer, look somewhere else. But if you want someone who at least understands pointer arithmetic and/or may have to lead a project where some of the developers are working in C or C++, then I may be your guy. I always clarify if asked, and never apply for jobs where I know they need a C++ guru anyway.

Comment: Re:C++ yes QT no (Score 1) 8 8

Do you feel the same way about Boost::Asio as you do about QT? I am willing to do more low-level coding when necessary; I just want to spend as much time as possible on core functionality. Network code does scare me a bit since I don't remember doing socket programming fondly in the 90's, but I'm sure I could figure it out. I do love the idea of a library doing it for me, although don't want the library to spread too far into my code. I want to have strong control over concurrency and memory management and don't want the library to limit me in either area.

Thanks for your input.

There is no time like the present for postponing what you ought to be doing.