OpenSource - Flashcards system w/ Tutorial - Online Courses, Schools, and Other External Resources

About this project:This project has been created in hopes for finally making language learning 100% free. LingoIO has already created software for native-level translations for various languages, and is slowly releasing source code to broaden the audience, and get developers into creating plugins for the software. Afterall, everyone should have free education. (This project supports both Android and iOS)
With this tutorial, you will learn VARIOUS elements to building the software from the ground up. This includes, but is not limited to very wide range of functionalities as listed belowAngularJSLoading data from JSON (soon.....)
Parsing JSON data (soon.....)
Custom Animation / Functionality (soon.....)
Building a flash-cards system
Android AppGyverPreparing a template
Building the backbone
PHP - Where most of the magic happens (soon.....)Working with the database
Spanish Syntax Mapping
Spanish word-ordering detection
Handling translation responses
Progress system
For now, we will go piece-by-piece .
[Getting your project setup]:The good thing is that we are building this from scratch, so, the only requirement is that you have Steroids JS installed, which you can grab at AppGyver . They have an EXTREMELY easy tutorial on getting setup. It's much better than we could ever make in a post, so, please follow their install wizard ^_^ Now that we have that out the way, let's take a look at the AngularJS controllers, and how they are setup.The structure of an Index Card
Setting up our controllers BackboneIn your application path, we should first find the file 'app\example\scripts\LearnMoreController'. This is the file we will be using as our main controller.We should start by creating a reference to our controller, which is quite easy:
Now that we can interact with our application, let's go ahead and setup our initial Learning controller
We can now interact with our controller ^_^ . But we still have a ways to go. . . .
We can now setup our initial deck, and let our scope know what it contains. Add the following inside the controller
We now have three flashcards: "hello", "the dog", and "the cat" with their respective answers.
Now, we want to be able to test on flash-cards don't we? For that, there are a few things we have to do.
We need to create another controller that will handle our study system. We will call this 'StudyController'
It should be placed under the FlashcardController.
Again, define your card_stack -- but this time, let's make another reference
We have our cards defined that we will test on. Now, there are a few variables you need to define, so that we can keep track of question progress
We are almost done with a basic flash-cards system, but we have two functions that we need to setup.
$scope.submitAnswer() and $scope.studySessionComplete()
The two functions should be added inside the StudyController, under the $scope.currentQuestion like so
$scope.studySessionComplete tells our UI we are finished, and to display stats.
This simply hides the gameBoard, and displays the scoreBoard as defined in our HTML
$scope.submitAnswer handles our submission of answers. Here is how it works
We get value of the input box, and set it as the answer
Then, we get a list of possible answers for the question we are currently on.
The app then loops through those answers, and looks for a match.
Next, if a match is found, add points -- and vice versus for wrong
Finally, we check to see if we are done testing. If not, increase the index -- and set the next question. If we are, $scope.studySessionComplete() is called.
We are done with the JS portion. Your code should look like this:
Last but not least, let's tie our code to our JS ^_^
For starters, you need to open the structure file found at
It should be this:
Finally, add the following files to folder {project_name}/app/example/views
As I find time, I will add other elements of this tutorial such as the back-end, syntax/word mapping, etc! Be patient ^_^
Check out the full source-code here on Github:


Reserved post for future tutorials

Last reserved post for future tutorials.


Christmas Gift Idea: The personal Love Calculator!

Don't forget to take part in our UMi X1 Pro Giveaway! It is opened untill the 15. January 2015. Go here:
Still searching for a small gift for your app or technology excited crush/boyfriend/girlfriend or similiar? Then this might be an idea for you: The personal Love Calculator!
The idea for a “personalized Love Calculator” I got from one of these TV commercials for expensive Love Calculator apps. Why not to make an own Love Calc, which basically works exactly as useless as a “normal” Love Calculator , but with the small but important “fix” that it returns 100% when two special names are entered. That would be a nice gift idea for your significant other for christmas .
Who directly wants to jump to the files, just scroll to the end of this post. There is a ZIP file containing a ready-to-compile B4A project, made for a 720×1280 resolution.
Since I am not a Java coder, I was not in the mood to set up the SDK, IDE, paths and so on for a one time programming in Java. So I searched for a alternative for creating Android apps with as less setting up work as possible. I found B4A: Basic for Android. This is a development environment in which you can develop native Android apps in a Basic-like language. It also has a graphical GUI editor. One big advantage is is that no setting up of paths etc. is needed, since B4A offers the oppertunity of “Remote Compilation”, where the program is uploaded to a server where it is compiled. So you just need to install the 30 days trial version and you’re good to create an app (the Java JDK only needs to be installed). The only downside of this program is, that for a few seconds after opening the app, a message box is shown that the app was created with the trial version.
So here now a short guide, how to make your own, personalized Love Calculator:
Installation of the software:
1) Download and install the JDK (here)
2) Download and install the Basic 4 Android Trial (here).
3) Get the B4A Bridge App from the Play Store (here). This app is needed to test the compiled APK later.
When the softwares are installed, you can directly begin with the app itself .
Adjusting the app:
When you start the IDE from B4A the first time, you land in screen like this:
Via Source->Open Source you can load the project from the Love Calculator (at the end of this post). Then the source code should be loaded.
Now you can insert the “special” names : Just replace the value of the variable name1 and name2. If for example the names Dog and Cat should produce a 100% result, the following lines have to be changed like the following:
Te first line is simply a comment and means “Change the names here!”. This is the only part in the whole code which need to be changed. In the actual program it does not matter, which name is on which position or if written with capitals or not.
I adjusted the GUI to a display resolution of 720×1280. If you need an other resolution, you have to to this in the “Designer”.
Via “New Variant” you can create a new resolution. In the “Abstract Designer” you can scale and adjust the position of the UI elements. I won’t go here too much into details, if you have any questions, just write .
Save the project and choose “Release” from the dropdown list right beside the blue arrow. Then start the B4A Bridge App on your mobile. Click on “Start Bluetooth”. Then go to Tools – B4A Bridge – Connect (Bluetooth) in the IDE. First click Find devices and then your phone. Then you should be connected with your phone. Now you just need to hit the blue arrow and you’re done! The app should be installed several seconds later.
The compiled .apk should be placed in the project folder under /Objects . Surely this App won’t win an innovation or design award, but thanks to the little “Fix”, which gives a specific name combination always 100%, it is a nice little gimmick, especially for christmas time .
The ZIP-file of the project you can find on this site.

Confused about how to evolve from (very) basic Android Development

I followed all the New Boston Android videos, did everything, understood everything.
I tried to create a basic RSS feed reader, in order to better incorporate some concepts I learned in the New Boston videos (http processing, xml processing, adapting the content to lists, custom lists, etc). When I got to pass the information from the http processed data to xml parser and the list, that's when I got too much confused and knew I didn't have enough knowledge.
Then I tried to do some "Shopping List Manager" (just like OI Shopping, a bit adapted more to my taste), in order to learn.
However, again, when I neededto pass information to other objects in other classes or something like that, I get confused and don't know what to do.
So I bought CommonsWare book, "The Busy Coder's Guide to Android", which I have the latest version (5.1) and I'm reading, but I don't like to advance when I don't fully understand something. This time I'm stuck on the Action Bar part, more precisely this one:
I know this will seem very basic to many of you, but I get really confused on all this calls, returning results and more calls.
I don't have a background on OOP, except when I worked with PHP frameworks like Symfony, I work usually with direct task programming (scripting, automation, etc), as I am a Linux System Administrator, so my code is mainly scripting and web interface building (Python, Shell Script, PHP, Javascript, etc).
Can anybody explain what can I do to better understand this? It's just lack of practice and in time I'll understand better? Is it OOP lack of knowledge/practice? Or is it Java lack of knowledge/practice?
Thanks a lot for all your help.
Maybe the best approach is to get some face time with a person who is more experienced and have him explain to you the concept you have trouble with while focusing on the parts you don't grasp. A real human has this flexibility to do a "targeted strike" unlike a tutorial or a book that has no idea where in particular the student may get confused.
For this particular issue, the issue can be summarized as follows. Let's say you have an object call a function:
This should be relatively straightforward. The next level of complexity is the fact that obj is just a variable representing an object, and in fact we can substitute anything else that evaluates to an object (i.e.: after it runs, you end up with an object). For example these all are legal ways to call the method as long as types match:
The last line illustrates calling some other function that returns the object, which is then used to call a second function. The final step from here is to recognize that instead of a single retrieveOrangeFromBox() we can have a chain of functions, each of which returns an object that is used to call the next function in line. For example:
The names are unnecessarily verbose to illustrate how functions and their results relate to each other.
You're not that clear as to exactly what you are having a problem with, but in general, it sounds like you need to get a java book and learn the basic concepts of classes and interfaces. Since you say you have a background in PHP you could probably go pretty far just by following the Java tutorials on the Sun website. I say java because that's the target language here, any book on OOP in any language would be adequate but learning java would give you the added ability to read other people's android code examples more easily.
After that, you can learn the Android framework. You develop in the Java language but you work within the android framework. What that means is that here, for example, the action bar is provided to you by the android system, and this callback is called by the system, so it is all set up for you. But to understand what is happening, you need to understand when the system calls this method and what it does. That is the framework.
So more specifically, how can you understand this code? This method is called from another method, onCreateOptionsMenu(). OnCreateOptionsMenu() is a method in the Activity class that is called automatically by the system at a specific time. You need to read about the Activity class and the Activity lifecycle on the android developers site. If you want your activity to provide an options menu, you create it in OnCreateOptionsMenu and return it, the system will handle it from there. So back to configureActionItem(Menu menu), here you are passing in the menu object, which contains MenuItem objects, which the system uses to populate the menu (either on the action bar, or when you hit the menu button, depending on the android version). Each MenuItem object has a view that is associated with it (usually created in an XML file).
One thing that may be hard to understand is that all these calls are chained, so if you don't know what they are returning you don't know where to look for help. It's easier if you separate the calls out. Here, the documentation is your friend. If you look at the Menu class on the android dev site, you see that findItem() returns a MenuItem. So then you look up MenuItem, and you see that getActionView() returns a View. Look at the View class, and you can see findViewById() returns another view (a sub-view that is contained within this view). so when you look at it all together, unchained:
findViewById returns a View, but you know that the view known by the id is an EditText view, and you want to use it as an EditText, so you have to cast the View to an EditText (which is a subclass of View) so that the compiler knows that it is an EditText type of view. That's what the (EditText) is doing in front of the findViewById call. To understand that you need to read about subclassing and strongly-typed programming languages. PHP is weakly-typed, so that might be new to you.
finally, you call setOnEditActionListener on the EditText. OnEditActionListener is an interface that you have implemented in this class. An interface defines a common set of methods that are guaranteed to be present in whichever class has implemented it. So when you set the OnEditActionListener to this, (this means the current instance of this class), the EditText will hold on to the "this" object and it knows that it can call a certain set of methods on it. What are those methods? look up the OnEditActionListener interface in the docs:
it only has one method,
so somewhere in this class, you will have this method defined and this is where you put code that you want to run when the EditText triggers this action. I assume this get called when the user touches the EditText.
It's really not going to be easy to work with android if you don't have a basic knowledge of OOP, specifically classes, inheritance, and interfaces. Also, knowing how java implements these concepts will help a lot. Then you can use your book to learn the Android framework.
Thanks a lot for your help. I also think my issue is with OOP, but I needed the opinion of people with more knowledge.
I understand very well what you said about onCreateOptionsMenu(), why and when is called, Activity class, lifecycle, etc.
Those things I understand without any problem. I also understand the basics of OOP, but I don't know almost nothing about Interfaces and I don't have almost any experience with inheritance, although I understand it.
I think I'm just confused because I haven't worked very long with OOP. I just don't know if I should invest in something like reading and testing something like Thinking in Java, or just practice more and more Android Development.

[Q] [Resolved] [.Net CF 3.5] How do i create a treeview based file browser

I have a problem with a project i'm working on and that is:
How do i create a TreeView based file browser that can export a selected path and filename to a textbox and a Process.Start call at the same time. That's it in a nut shell. The main part if the tree view bit but i haven't figured out how to do variables yet and i'm gonna need one for the second part. I have spent hours googling and i have this question posted on a dedicated VB forum.
I'm using Visual Basic 2008 as the IDE and .Net CF 3.5 as the language (obviously)
If anyone has any ideas on this i'll gladly hear them coz i am really stuck. I found writting code to soft reset a device was easier
TreeNodeCollection tr=treeView1.Nodes;
TreeNode tn;
foreach (string dirs in System.IO.Directory.GetDirectories(System.IO.Direc tory.GetDirectoryRoot(Assembly.GetExecutingAssembl y().GetModules()[0].FullyQualifiedName)))
tn = new TreeNode(dirs);
//tr = new TreeNodeCollection();
Is that C# code or VB?
C#....VB don't have the curly brackets
So i've come back to this question after a few months avoiding VB. I'm now working on a new product and the lack of an folderbrowserdialog object in .Net CF is killing me.
What i need is this (oh and thanks to everyone that posted above but i can't make that solution work). A way to list all the folders on a device and then select one that can be passed to a variable so it's path can be used elsewhere. Maybe also pass the path to a textbox just so it's clear what you have selected. I've spent 2 days googling this and i did find a few things. Most don't work and the rest are in c# which is not much good. So if anyone wants to help me out i would really appreciate it.
O.K. Here's how it's done, with a crash course in one of the most powerful of programming techniques - Recursion. It can confuse the hell out of rookie programmers, as they just can't get their heads round what's going on. It is dependant on a function's local variables and fortunately, .NET's stack based architecture allows us to use it to the full.
You will need, 1.) a TreeView object - named "treeView1" and 2.), a label named "label1" placed underneath it. The label is only there to prove the point that we can get at the full pathname of the selected directory in the Treeview. In reality it can be dropped, just put your processing code directly in the TreeView's AfterSelect() event.
The Form_Load() event gets the directories in the root directory, by calling GetDirList with an initial directory of "\".
GetDirList() adds the directories to the TreeView then calls GetDirList again on each directory to get any subdirectories, and again on each subdirectory, ad nauseum. Keep going until there are no more directories returned.
When completed TreeView contains a list of every directory/subdirectory on the device.
When you select an item from the TreeView the full pathname is displayed in the label. The image at the bottom shows it running under debug on the WinMo 5.0 emulator. There are several directories you would not normally see on your device.
Good Luck, stephj.
You will need the VB equivalent of using System.IO adding to your project.
This stuff has been around since .NET CF 1.1
The original project was written in C#, I used .NET Reflector to translate it into VB from the original. The original C# is included here:-
cool thanks. I'll have a look at coding this tomorrow (i having some fun time right now).
I did have a look at doing this with a list box yesterday but i was getting errors left, right and centre so i really do appreciate the help.
Just an FYI the VB equivelent of "using" is "imports" otherwise most of the objects are the same but i don't nee to worry about adding it as the program is already interacting with the file system.
Again thanks very much. I really appreciate you taking the time to help me out.
I've just had a look at implementing this but i'm having trouble getting the treeview to populate with the folder list. What am i doing wrong? the object names all match up and i can't see why it's not working. Am i just being plain dense?
What i have Is pretty much what you posted except for a few changes to allow for the fact that the treeview object is in a tabcontrol and i already have a bunch of labels knocking around so the label is called label28 and not label1.
I'm sorry if it appears like i'm not trying or i'm asking you to do all the work but i am genuinely really stuck. I get the recursion principal, That's not an issue but i'm trying to create something from scratch that should really have been included in .net CF and i'm just not that good a programmer yet
Should work..... but without seeing the actual code it's rather hard to remotely debug it.
To prove the point, here's the complete VS2008 VB .NET CF 3.5 project.
In the \bin\release directory is the actual executable. If you have .NET CF 3.5 on your device, drop DirList.exe onto it and run it.
I had a look at the project you posted and just copied the coded over. I did make some tweaks so it only loaded the folder list when the tab the treeview was on was clicked but that didn't work so i repated the code in as is and voila! it works. Now all i need is to create a variable to store the selected path in but i think i can manage that.
Again a huge thanks.
Here's the project to indent, compress, and expand the directory tree structure.

[APP] Dcoder Mobile Coding Platform

Dcoder is a mobile coding platform especially designed to hone your coding skills on mobile. It is a complete package to learn and comprehend the programming languages from a wide range i.e from c to ruby. Here is the added bonus: it includes Rich text editor supporting syntax highlight and packed with all the necessary tools required to give you all the edge an IDE or Code Compiler can give.
Dcoder lets you code on mobile in more than 30+ programming Languages from c, c#, cpp, python, php, java, ruby, objective-c and what not?
Not only you can code, you can debug the code see compilation errors and Result on the same screen. To keep you engaging in coding we have our algorithm section, where you can improve your coding skills whatever be your level whether its novice or expert, We have something for you in there, you will be having fun solving these problems while walking in the park or in a boring college lecture.
The features include:
1. Rich Text Editor with Syntax highlighting
2. Line number, Auto indent, Auto complete Parenthesis
3. Undo Redo
4. File Open/Save
5. Custom Suggestion View
6. Multiple Language Support
7. Replacement for User input for languages like C, C++, Java and other
8. Active debug view for faster access of Output
9. Thoroughly designed Algorithm problems to improve coding Skills and make programmers industry ready.
10. Leader Board : To know where you stand in International coding Ground
11. Custom Menu Drawer
12. Custom Themes, Editable font Size for Editor
and much more!!
+ MindIt : to keep you updated with the latest Tech news from around the World.
Suggestions and Feature requests are most welcome.
For donations: (buy me a cup of coffee)
Google Play Link:
Update :
Update : 1.1.2 brings alot of changes , Please update your Apps, older versions will soon become obsolete.
Changelog :
Dcoder 1.2.1 is up now.
Changelog :
Dcoder 1.2.2
Dcoder 1.3.4
Dcoder 1.4.0
Dcoder 1.5.0:
Superb job bro
Keep it up
This looks ****ing amazing! I'm downloading it now to check it out, will let you know what i think
can i compile and edit apk files like .. systemUI.apk to work with 3minit battery
Good work!
I am curious to know what you have used to compile C#, though. It seems that it is compiling in the cloud.
Hello, didn't test yet, but it wouldn't hurt to have syntax highlighting, auto completion and syntax error support for bash and powershell.
Of course we wouldn't be able to run the powershell script from the device itself, but it will be useful to write script on the train.
The integrated RSS feeds will likely eat mobile data while users may have their own rss client already, maybe with the same feeds.
And hey, do you really need to search for accounts on my device ?
Hello Sir,
About the accounts issue, google+ login requires account permissions to detect accounts connected on current device.
I'll try to add other features in update.
Thanks for the review.
Yes, it compiles on the cloud, supporting this much programming languages on local was not possible either.
it cant be used to modify apks, its to test small algorithms and code snippet and practice coding on mobile device.
Why would I need to login to something to write code ?
It is not necessary to login to code, you can press skip button on Login Screen however if you want to solve problems you need to be logined.

[C#/VB] System.Windows.Forms extensions for updating properties from other threads.

As developers, we all hate how our code looks like when using multi-threading, and usually, it's a real pain managing all the invoke methods. Even using anonymous methods, it never seemed to be the best way for me.
So, I decided creating a library, that manages everything for you. It checks if InvokeRequired, and if it is, it invokes itself automatically without writing a line of code.
I know, you'll say, we can write a method like this one for ourselves whenever we need it. Just carry on reading to see what's special in this one.
I've written it dynamically, taking in consideration the performance of the code. And it turned out pretty great, as fast as if you had written your own methods, but with cleaner coding.
The library adds an extension called SetProperty() to each control in System.Windows.Forms namespace.
Let's say we have a TextBox called txt, and we want to edit the property txt.Text in it to "Hello!", a normal invoke method would look like this:
Referencing my library, you'll only need to write this:
Sounds pretty easy, doesn't it?
This works, for every single control out there. Even if you created a custom one, it will work for you.
A list of the properties of each control is shown as an enumeration with all the details you may need to know in its summary:
A screenshot showing how the code looks like:
This will definitely avoid any issues you may have with cross thread exceptions, and even represent your code in a real neat way.
You can download it from here.
Please keep both DLL and XML files in the same directory after extracting.
Everything's set, you just have to Add reference to the library to your application, and enjoy!
Just use anyControl.SetProperty() method on the go.
I'll release a documentation later, but any feedback for the moment would be appreciated!
Thank you
Best regards,