[01:17] <IDWMaster> Hi. Is there a version of Quickly for C++?
[01:19] <IDWMaster> I've been working on a C++ project for Ubuntu for a while; and I realized it would be nice to introduce people (especially those who are new to development on POSIX systems) to app development on Ubuntu; specifically dealing with the build system (GNU make, GNU autotools, libtools, etc). When I started I had to get data from several different sources; there wasn't a nice tutorial in one place like there is for Python.
[01:19] <IDWMaster> Why is this?
[01:19] <IDWMaster> Or is there a nice tutorial somewhere that I wasn't aware of?
[01:22] <IDWMaster> In my opinion providing Linux developers with C++ tools right away could improve the quality of the platform, as native languages typically (though not always) lead to higher quality applications. Unless I'm mistaken and Python has a fast, ahead-of-time native compiler now
[01:23] <IDWMaster> Personally I think app developers should not just be able to create a Python app for Ubuntu in under five minutes, but also a C++ app in under five minutes, which is why I've been working on some libraries to make it easier to develop in C++, and create cross-platform apps.
[01:24] <IDWMaster> Library is open-source and is available on Launchpad under the GPL license
[01:24] <IDWMaster> https://launchpad.net/crosslibs
[01:24] <IDWMaster> Goal is to allow people to "quickly" create C++ apps
[01:25] <zoopster> IDWMaster: hit up dpm during Spain office hours...he'd be interested in this.
[01:25] <IDWMaster> Who's dpm?
[01:26] <zoopster> david planella...he does a lot for developer relations in the ubuntu community team
[01:26] <IDWMaster> Do you have any contact information for him; or at least a Launchpad account URL?
[01:27] <zoopster> https://launchpad.net/~dpm
[01:27] <IDWMaster> Thanks
[01:27] <IDWMaster> Wow. Sure a lot of e-mail addresses registered with that one account!
[01:27] <zoopster> he's a geek
[01:28] <IDWMaster> Good. It's hard to find good geeks these days.
[01:28] <IDWMaster> Especially in the US it seems like -- I'm a computer science major and most of my class isn't even interested in programming!
[01:28] <IDWMaster> They're just taking it to satisfy requirements for biology, math, or physics.
[01:29] <IDWMaster> I was going to start an app developers' club at my school but there was absolutely no interest.
[01:29] <zoopster> he's on during central european time so in ~5 hours or so you'll see him in this channel
[01:29] <zoopster> wow...really?
[01:30] <IDWMaster> Yeah
[01:30] <zoopster> i can't believe that...there has to be some interest...even the smallest schools have IEEE clubs or others where programming is of interest
[01:30] <IDWMaster> Not Augsburg College
[01:30] <zoopster> oh. ok.
[01:31] <IDWMaster> I've tried to start one up but it just hasn't gotten any traction. I'll keep trying though :)
[01:31] <IDWMaster> Lots of people have negative pre-conceptions about programming in general, and especially C++
[01:32] <zoopster> well...Minneapolis is big enough...there's bound to be some interest outside of school.
[01:33] <IDWMaster> I gave a speech at a major university (University of Minnesota) recently about how C++ can actually simplify common development, and how to properly abstract things. Most of the people at my speech were graduate students, professors, or professionals though, not many undergrads.
[01:33] <zoopster> I can see that...it can be daunting compared to python
[01:33] <IDWMaster> One new addition I made is called StdVal in my library
[01:33] <IDWMaster> For example
[01:33] <zoopster> is it they don't want to work hard?
[01:34] <IDWMaster> Think they're just frightened by the mere mention of pointers
[01:34] <IDWMaster> even when it's a friendly std::shared_ptr<T>
[01:34] <IDWMaster> auto somevalue = StdVal(5)+StdVal("Hello world!");
[01:34] <IDWMaster> Console->WriteLine(somevalue);
[01:34] <IDWMaster> /Above line prints "5Hello world!"
[01:34] <IDWMaster> Text is always stored in Unicode format in the platform locale
[01:34] <IDWMaster> I use ICU when writing to a file though
[01:34] <IDWMaster> Example:
[01:35] <IDWMaster> std::shared_ptr<Stream> filestream = inst->Open("somefile.txt",ReadWrite);
[01:36] <IDWMaster> std::shared_ptr<IDataBuffer> utftext = parser->GetBytes(somevalue);
[01:36] <IDWMaster> std::shared_ptr<IParallelTask> task = filestream->WriteAsync(utftext,utftext->sz);
[01:36] <IDWMaster> /Above line gets an asynchronous operation for writing to a file
[01:37] <IDWMaster> /we can run this operation now using task->Run and pass in a completion callback
[01:37] <IDWMaster> task->Run([=](std::shared_ptr<IManagedObject> returnvalue) {
[01:37] <IDWMaster> std::shared_ptr<StreamRetVal> rval = CastShared(returnvalue,StreamRetVal);
[01:38] <IDWMaster> }
[01:38] <IDWMaster> );
[01:38] <IDWMaster> where rval is an error code for the asynchronous write operation
[01:38] <IDWMaster> All of my library functions are thread-safe, except for IC80FS functions
[01:38] <IDWMaster> All I/O is done asynchronously by default
[01:39] <IDWMaster> parser (an instance of a std::shared_ptr<IDataParser>) is a platform-independent data formatter
[01:39] <IDWMaster> It writes data in standardized formats which can be readable by nearly any modern computer system
[01:40] <IDWMaster> It takes Endianness, byte sizes, and string encodings into account, and abstracts all of these concepts for the developer
[01:40] <IDWMaster> Also; memory allocation is cheap in my library because I wrote a custom memory allocator for it; so you don't have to worry about how many times you can call "new" in a tight loop without slowing down your application.
[01:41] <IDWMaster> malloc (called by new) is faster in Linux than Windows, but I chose to still use a custom allocator because I want it to be portable to other platforms like Windows, where malloc is very slow.
[01:42] <IDWMaster> Memory pool is also thread-safe and supports multiple pools for different threads, but also allows sharing of objects between threads.
[01:42] <IDWMaster> Although I've recently ran into a very annoying bug which I will probably get to fixing this weekend.
[01:42] <IDWMaster> It's a random segfault when calling a method in a lambda function passed by value across a thread boundary.
[01:43] <IDWMaster> I've determined the problem is somehow related to my allocator but haven't figured out exactly what the problem is yet.
[01:43] <IDWMaster> Currently only affects my IC80FS libraries (normal file system support still works just fine).
[01:45] <IDWMaster> BUG FOUND: Quickly doesn't work on computers with small monitors!
[01:47] <IDWMaster> Anyways; I'm probably the only one who uses a netbook to code anyways.
[02:07] <mhall119> IDWMaster: still around?
[02:07] <IDWMaster> Yes
[02:08] <mhall119> https://launchpad.net/quickly-community-templates I think has a quickly template for C++ and Qt
[02:08] <mhall119> you can make a quickly template for pretty much anything
[02:09] <IDWMaster> Thanks
[02:09] <mhall119> np
[02:10] <mhall119> also, what do you mean quickly doesn't work on computers with small monitors?
[02:10] <mhall119> it's all CLI