Thursday, April 28, 2016

As Sophomore Year Closes...

     As of today, at 9:36, I am official done with my second year of college. Looking back over the semester, I have learned an immense amount of information. My programming style and thoughts on attacking problems has improved significantly. This semester I joined our computer science department's ACM club and started attending their programming jam sessions where my team, camel_case, won first place for a majority of the sessions. While this has helped me get better at my planned attack on problems, I owe a majority of my programming improvements to my Data Structures and Algorithms class led by Bill Manaris. These improvements include error handling, my stylistic choices for programs, and abstract data types. For one homework, I had to make a DNA molecule where I implemented a conjoined linked-list. Each index of the left helix had to point to the right helix and vice versa to form the bond between the nucleotides. While the exams for this class were very hard, they improved my knowledge even further. I was able to expand my knowledge while taking an exam which is not very common. Exams are designed to test what you know, but these exams challenged us to go even further. One question on my final exam was to reverse the items of a queue by using a stack. I definitely didn't understand what the question was asking on the test (it was worded very strange), but now it makes so much sense. Stacks have a method pop() that gets rid of top element and returns it's value. I could have simply populated the stack by dequeuing the queue (FIFO) and then setting the stacks values (LIFO). I could then repopulate the queue by setting each item to what is returned by pop() (the last one in is the first one out making it in reverse order once added back into the queue). I couldn't imagine being able to write ADTs for binary search trees, linked-lists, trees, stacks, queues before this class. There's much more information we didn't even get to cover in just a semester such as hash-tables, heaps, and others I don't even know exist yet. This is only the end of my second year at the College of Charleston and there's so much more I'll learn because of our great department.

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.