Sunday, December 20, 2015

Websites

     I've started to work on developing the Chroni section of cirdles.org with Jekyll hosted by Github and it's been rather fun. I haven't done website development since my first year of high school (basic development at that) and Jekyll provides an easy way to do it. I am considering using Jekyll for my blog and will post if I do switch over to a new blog and its address, but for now it will remain the same.
     The Android version of Chroni is coming closer to a more complete version and I am hoping that by February I can start developing the iOS version. My next project after I finish adding the help section on the website is to start adding test cases. When I start with the iOS version, I will begin with adding testing so I can start with test driven development.

Monday, November 2, 2015

Major Academic Year Support (MAYS)

     Currently, I am working on a grant to fund my research with CIRDLES. Never in my life have I thought that I would eventually have to write a grant. My most brainiac brother would write grant proposals and get them and I thought, man he's so smart, look at his life. It never occurred to me that I might one day also apply for one. Even if it's not accepted, I think it's a big step in my life and could lead me in the right direction. I'm very excited to see how things will progress until my graduation. 
     Sometimes I think it was just luck. I came to college, a semester in started with a research team, and then another semester later took over the project I was working on. I constantly think of these things as luck, but in actuality, it was just me trying to do something for myself. I sought out research because I had mentors that assured me it was possible. These mentors have led me to want to mentor people myself. I want to do what they did for me. In the spring I'll be a peer facilitator for the Android App and Development FYE and I hope I can inspire them. I hope that I'll do for them what my peer facilitator did for me. 

Wednesday, July 22, 2015

Late Update

     It's been a while since I've written a blog post, and since then, I've been working an additional job.

     I have officially taken over the production of CHRONI and have been trying to get the bugs all sorted. There was a bug that crashed the whole app and many of the features that were implemented before disappeared. I started a base from version 0.6.0 and worked from there trying to implement everything again. I finally have a working product and a pre-release was released on CHRONI's github page. It is now at version 0.8.1 and my next project is the fix the formatting of the aliquot table.
     I have been working on that table for I don't even know how long and I still can't figure it out. I'm sure it's some simple solution that I'm just not grasping, but I need to use ET Redux to fix it and I'm having problems with that. It's quite a nightmare. I was able to get Redux to work once, but I can't anymore and now I'm just comparing the xml file to my table in CHRONI, which doesn't work that well because it's the formatting from the xml I need to fix, not incorrect numbers. I'm mostly confused on the % sigma columns. I have found in the code where to fix everything, but I don't have the knowledge to fix it.
     I think I'm getting better with app development, but I'm still so lost. I haven't realized until quite recently. I need a big project to work from the ground up using a template like making CHRONI for iOS. There are so many things I'm just looking at and not really grasping the concept of. Hopefully when the rest of these bugs are fixed for the android app, I can learn much more with iOS.

Tuesday, May 19, 2015

iOS - Xcode

     So, I am currently learning Xcode so I can start programming CHRONI for iOS. Right now, I'm having a lot of troubles, but I'm sure I'll be able to get a grasp of it soon. There is a course online that I want to take and when I found it, it said it was 75% off and was at $50 and that it expired at the end of the day I discovered it. I figured they were trying to scare people into it being much more if they didn't act fast and so I called their bluff, but I was wrong. The next day it was back at $200. The company, Udemy, keeps giving me a 50% off coupon, but I think I'll just try to wait it out and see if it will go back down to 75% off. I think it's a bit ridiculous to buy something like that even at $50, but I was looking at reviews of it and it goes through making a lot of mock apps that we use frequently like  Instagram, a list app, and others.
     Like I said, I am having difficulty getting use to Xcode, but here is a little preview of what I've done today with CHRONI for iOS.

Friday, May 1, 2015

Unity (Game Engine)

     I have recently been following an indie game developer. The game he has been creating has been under development for exactly one year this month and the developer writes a blog and makes youtube videos about his development. The concept of the game is quite interesting and watching the development of the game really excites me. After developing for a year, anytime I see a game, an app, or a program in general, the possible code just runs through my head. You will always see bugs in a program and I constantly envision the changes that would be needed to make the bug no longer occur. That being said, I want to play around with Unity to see if I can contribute to the game if the developer needs it. Dabbling in many different IDEs is great to expand my knowledge and also, I would need to learn C, C++, or C# to help develop. Having another language under my belt will be exceptional and will help me in the future.
      What I am saying, is that I have become so interested in software development that I like seeing how something progresses and as I watch more of the developer create this game, the more I want to help with the project. Maybe I will start playing with Unity, but who knows. I also said I wanted to start developing for iOS this summer (this involves learning Swift/Objective-C) as well as make a Carta app for the college for both Android and iOS. I want to do so many things that I don't think I will have the time to do all of them, but having the desire to work with all of them shows how much passion I have for my field. 
     I feel like everything in my life is falling into place and I have finally started feeling that I am of importance to people. I have so much planned for me and I'm really excited to see those things work out for the future. 

Wednesday, March 25, 2015

dp vs. ppi vs. dpi vs. px

     I was developing layouts for the app I am working on and I discovered that I needed to make different layout xmls (Extensible Markup Language) for phones, tablets, and large sized tablets as well as landscape views for all of those layouts. Originally, I used normal, large, and xlarge qualifiers when creating the layouts but I discovered a problem.

A large layout on one tablet looks completely different than that of another.

     A Samsung Galaxy Tab S 8.4 and a Nexus 7 are both considered large layouts, but when I developed the large layout, I used my Galaxy Tab as an emulator. Thinking Yay! I can finally upload this to github! (My first "real" commit). After making a pull request to my collaborator (Great Team Leader Joye), I got an email that said this:


Hey Gabrielle!
I was excited to see that [the layout] flips on my device! Here are some screenshots of some of the flipped layouts. As you can see, a few of them need a little bit of adjusting. Also, the Report Settings screen always crashes when it is in the horizontal orientation. I'm not sure why. Perhaps just one of those weird null pointers.
But, also attached is the APK! Try it out and let me know how it goes for you!
Joye 








     I was so disappointed when I got this email, but it was extremely useful! This made me realize the problem at hand. Layouts should be more than just size ("large") specific. I needed to figure out a way to make them specific to the device itself. I found two qualifiers called "Screen Width" and "Screen Height." So I thought okay, let me go find the dimensions of devices that give trouble. This is where the "dp vs. ppi vs. dpi vs. px" comes in. I assumed it wanted those dimensions in inches. Wrong. Android uses an acronym called "dp" for a good many of their properties. Margins use dp and so does  padding, height, and width use for widgets. I discovered this the first time I started using the ADT (Android Developer Tools) bundle with Eclipse, but I really didn't think much about it and just figured out how to use it. Okay, realistically, I always used the "guess and check method." That strategy they taught everyone in 3rd grade for math? Yeah that's the one. Being the ignorant self I can occasionally be, I needed to figure out what dp was and how it related to the size of devices. Dp stands for density pixel. It was also known as dip at one time (Density-Independent Pixel). This is what Android says is needed when defining UI layouts and to express layout dimensions or position because it is more accurate than an inch or a pixel because it does not vary in units and it is not the same physical size on every screen. This means that it is proportional to the screen.

But how do I find what dp I need for my device? It's an 8.4 inch and Android says I shouldn't use inches to define size in layouts because it's unreliable?

     This is the hard part. After researching my tablet (the galaxy tab), I found out it is 2560 x 1600px (pixels) and has 360 ppi (points per inch). I didn't find the dpi (dots per inch) and of course I didn't find the dp because that would just be too easy. So I thought maybe I can find a conversion calculator online! Nope. Also I found this page that will help and be more specific (also my source): Difference between px, dp, dip and sp in Android. I never got a clear idea on how to convert these things so I decided to step back and take another approach. Maybe I shouldn't use those qualifiers and look into grid layouts instead of relative layouts?



--------------------------------------------------------------------------------------------------------------------------



     Remember how I was talking about another IDE for developing for Android? Yeah? Well listen to this. It is very important. Do not use the ADT bundle with Eclipse! I repeat, don't even try to use it. It makes you hate developing for Android through all of the crashes and problems it creates. The build time takes forever and also the emulator even if you have haxm (Intel's Hardware Accelerated Execution Manager) installed. Also I think it might discriminate against girl developers (joking here). I was one of two girls in my Android Development class of 19 and it wouldn't even let me make one change before crashing. Just don't even waste your time even if you have experience with Eclipse.

Here's an excerpt from an article that I found when debating Apple and iOS. In one part, it basically just makes fun of the ADT bundle with Eclipse.


Oh, Android. The current statue-of-the-art IDE is Eclipse, customized with Android plugins, and it is embarrassingly bad Slow, clunky, counterintuitive when not outright baffling, poorly laid out, needlessly complex, its just a mess. Its debugger is so clumsy that I find myself doing log-file debugging most of the time, whereas the XCode debugger is my iOS go-to bug-hunt tool. And the less said about the Android emulator, which takes minutes to launch and then half the time fails to connect to the Android Debug Bridge, the better. Now, to be fair, Google knows this is a problem, and they are working on a new Android Studio IDE. It's nice to see they're working on it, but it's amazing - in a bad way - that 4.5 years after I purchase my first Android phone, this mess is still the state of the art. 

 Android vs. iOS Development: Fight! | TechCrunch


Now this post was written in November of 2013 so I'm sure he (Jon Evans) is very pleased now!


You can see more about my adventures with layouts and learn how to create them here.


Wednesday, February 11, 2015

Landscape Layouts

     I've been working on the updating the layouts in Android Studio for the CHRONI app and by messing around, I figured out how to add landscape layouts. At first I was only worried about adding layouts for standard size phones, but now I've paused to make these landscape layouts. To create a landscape layout in Android Studio, right click on a layout that has been designed in the layout folder directory, the first option will say "New." Click on that. Once the New tab has been clicked, the first option will say "Layout resource file." Click that. This opens a small screen that will let you choose qualifiers for your layout with options such as Language, Size, Ration, Orientation, Night Mode, and others. Enter the same layout name as the original and tag on the .xml extension. Then select the orientation qualifier and hit the right arrow button in the middle of the window. This will drag it to the chosen qualifiers table. It then gives you screen orientation options. It is set on portrait as a default, but change this to landscape. When creating my layouts, I also added Size as a qualifier to create different layouts for different screen sizes. X-large usually refers to 10 inch tablets, large as 7 inch tablets, normal as standard phones, and small as a Wear Square. I really didn't add any small layouts because I'm very doubtful that a geochronologist would want to use CHRONI with a wear square... Also there's no way layouts we have designed would work with it effectively; however, I added one just to show you the different layout options. Below are screen shots of the GUIs.

xlarge - Nexus 10
large - Nexus 7
normal - Nexus 4
small - Wear Square



Wednesday, January 28, 2015

Android Developer or iOS?

     I can start off by saying that I am an big Apple user. It's funny because I use to fight with my brother about which was better, Apple's iOS or Google's Android. This was before I started developing for Android and I still fight with him about it, but I actually have the knowledge now to come up with factual arguments. At the time, I had never had an Android device so I guess you could say I was pretty ignorant, but after selling my iPad to get a Samsung tablet so I could be more "diverse", I still discovered that I was in favor of iOS.
     That being said, in the future I want to research more about developing for Apple. Currently, CHRONI only works for Android platforms and maybe if I can find blogs or articles about the "big switch" I can go about it more easily. We're still working out bugs in the app for Android, but there will also still be another person working with CHRONI once Joye graduates in May. Maybe by that time, CHRONI will work more efficiently with less bugs. 
     Someone did mention to me that there was a program that made writing for multiple operating systems so much easier. Upon more research I discovered Xamarin's cross-platform development tools. Still being new to the computer science field, I have much to learn, and most of the big chunks are programming languages. Android operates in Java, iOS in Objective-C (switching to Swift), and Xamarin's developing tools in C#. The question is, now that these tools make coding for apps so much easier, would it be better to just learn C#? I want to learn both regardless, but for timing, I want to learn what I will use most often right now. I honestly need more information, but I think I will start off with Objective-C or Swift. If CHRONI has already been made with Android Studio then there really isn't a huge purpose to remake it with Xamarin. I'm definitely going to look into Xamarin in the future because the whole cross platform thing is just super innovative. 

Thursday, January 22, 2015

Android Development Issues

     I have recently been having many issues with virtual devices and adding my own device for testing. Joye, the leader of our project CHRONI has been developing using her Nexus 7 for testing with API 19. Her tablet is working wonderfully with running CHRONI, but I have been having issues with running the program with anything besides her device. I currently have a Samsung Galaxy Tab S 8.4 and have been trying to test with it, but the program keeps crashing. What I am trying to work on is getting the program to work on different platforms. Currently, CHRONI only works on 7'' and 10'' devices. The program always crashes with virtual devices whether they are the right size, the right API or what. It's quite irritating to say the least. I need to figure out why these virtual devices keep breaking because I am not going to be able to test real devices. I don't have the ability to do so. At first I was using Nexus 7, Nexus 10, and other virtual devices in API 21. So then I thought, well maybe it's the API. So I checked the manifest and sure enough, the target SDK version was 20. I created more virtual devices with API 19 (there wasn't a 20) and tested them and they still failed. I'll figure out the problem soon enough, but I'm eager to see them running now.

Wednesday, January 14, 2015

Software Installation Can Be Tiring

     Today, I have been setting up my workspaces in the CIRDLES Lab. I've been trying to install Android Studio on two machines, but one gave me the biggest issues. It was saying that my login didn't have permissions nor space to download Android Studio (an IDE for Android development). After trying to work with this machine for three days (it had crashed the first day) I can finally say that it now works. I ended up having to delete my login account and create another one.
     Another problem I encountered downloading Android Studio yesterday was that it was saying that there was no JVM found, which I had no idea what it was talking about. I figured that it meant that my version of Java was out of date, but when I opened the terminal and entered the javac -version command, it said I had the correct version. So of course I hit stack overflow, checked out links related to the problem and users were saying that I had to go into the package contents of the program and edit a text document called Info.plist, but on further inspection I found that it might end up breaking my IDE and cause issues with updates. I'm not sure how I found the solution, but Apple support recommended installing another Java program. It worked and now I got it to download!
     I find it funny that I was having problems with the JVM message yesterday because in my java class this morning the professor went on about Java Virtual Machines and why they were important and more about IDEs (Integrated Development Environment) and JREs (Java Runtime Environment). It's just really awesome to see how all of this is connecting because I was using all of these thing last semester when I was taking Android App and Development, but I didn't really know the connections. I feel like I will learn a lot from my professor this semester in CSCI 221.

Tuesday, January 13, 2015

Oooh... The dreaded first post.

      Happy New Year! I am thrilled to say that I have started working as an undergraduate research assistant with CIRDLES at the College of Charleston. Yesterday was the very first meeting for me and I'm excited to be working with fellow students at CofC. Because it is only my second semester of freshman year, I don't know too much, but I am doing everything I can to learn more. Can I say something honestly? I am so nervous that I am going to do everything wrong.
     I do know though that it is really only my nerves. I am a good student who works hard to accomplish things so I'm sure I'll adjust and work fine with CIRDLES. At the moment I am working with two fellow students with CIRDLES to develop CHRONI, a mobile application that presents archived data downloaded from the Geochron database and is then put in a customizable format for use by geologists. For now I just have to keep on working hard.