Blog

I hate my mobile app code today!

Today is just one of those days that I hate all the code I’ve done. Programming doesn’t come naturally for me which, in a way helps me explain it, BUT some days I just wish I’d get it!

Get it, in the way that friend of yours (we all have THAT FRIEND) who started to code one day and never looked back! To be that guy.

Enough belly-aching as my temporary block here will benefit you in resource sharing ie the mobile platforms I looked through today.

Today I was trying out some of the free mobile app platforms suggested by Mashable.  My main objective wasn’t to build a real app but to find a tool that would generate code that I could look through to get the syntax and feel.

I’ve yet to find that.

Appypie was a pretty easy drag-and-drop solution and it said it would generate a zip file to download. It worked great until I got to the publish stage. Then it froze up and eventually got locked in some sort of loop. Strike 1!

Next I tried AppMakr which was easy enough to drag different elements such as Text Inputs and Forms into the design gig, but couldn’t figure out how to drag anything out. Delete and re-starting was the best option to work with. It was clear if I would actually see any code one done and sure enough, AppMakr, launched the application to its free provided URL which is nice for publishing to gauge interest but not great if you’re trying to learn from their code based. Also AppMakr’s included graphics are pretty tacky and old-school looking. Strike 2.

My third option, Codiqa was better (and actually not mentioned in the Mashable article’s top ten mobile platforms) but I may need to upgrade to the paid version to be able too look at the code. Here is a link to their 14-day demo which had more up to date graphics than AppMakr and was more responsive than Appypie.

As usual I didn’t get nearly as far as I thought on the next version of the tree care cost calculator app that I’ve been contributing to. I did find i nice slider feature that would be good for the user who is trying to estimate the height of the tree they are interested in.

Here is the screen shot.

Tree Care Calculator-Initial

I’m still exploring other ways but I’ll let you know if I upgrade Codiqa or find a tool that makes it easy to look at the underlying application code.

The best part about a frustrating coding day is you look back and see that those were intense learning days. I look forward to that distance and reflection. The truth is I’m deep into mobile application development but there are alot of sharp rocks and shallows in these new waters. And they all seem to be converging on me today!

Feel free to question us if you get stuck. Helping someone else get unstuck can magically do the same for you.

- Matt

 

 

 

 

 

 

 

 

 

 

 

 

 

Understanding the Software Development Life Cycle

Understanding what the software development life cycle is, will help you manage that cycle better. And it helps you see where your code fits in the larger picture.

What is a software development life cycle? It is nothing more then a timeline for a given project, dividing up a larger project into smaller steps, frequently called phases.

Easy right! Well you know how it goes with software dev, the simplicity pretty much ends there. The project will theoretically help manage costs, meet deadlines and outline testing and fixing bugs after the fact.

Why is it important?

On large projects there will be a separate maintenance life cycle for the software. For example, Microsoft XP which has had a very long software maintenance schedule.

The point is managing the development life-cycle help bring code to life and make sure that your clients or bosses, who may not be tech savvy understand where the budget went and what it got.

What the phases of a software life-cycle? Glad you asked. The most common and intutive software life-cycle is called Waterfall. It has the following steps.

Stage 1: Planning and Requirement Analysis
Stage 2: Defining Requirements
Stage 3: Designing the product architecture
Stage 4: Building or Developing the Product
Stage 5: Testing the Product
Stage 6: Deployment in the Market and Maintenance

We will get into more in-depth of some of these tactics but begin to familiarize with them while also understanding that real work software processes bleed all over these steps.

Here is my definition of these stages.

Planning and Requirements Analysis – This is really about the software owner looking at a business process and deciding that the software, website, mobile application should be required to solve this business process better, more quickly or more cheaply than currently done.

Defining Requirements – Once you identify the requirements, this is the step where it’s explained in detail how the software will be required to work to deliver that solution identified in planning.

Designing the product architecture – Understanding this step helps by understanding the end product or deliverable that the software team delivers which si some sort of basic code or visual representation of how the software will work. For web development it’s frequently a wire frame or series of templates that given the layout of the website for example.

Building or Developing the Product – Or the only step your client cares about. Also mi9ght be the only step that your client or boss is truly aware of. This is the fun part too, the coding and piecing together the different pieces of code into a testable program.

Testing the Product – Stakeholders test out the program and see if it works, what needs to be altered, what is good. Ideally the target user base also gets to test it but while very important it may not be to clients.

Deployment in the Market and Maintenance – Once tested and approved, this is the stage where a design skin might be used to help the overall interface, documentation like Quickstart Guides and Tutorials, is finished and included and it becomes a full-fledged software package ready to be shipped out to the world.

Is this type of software life cycle the final word. Not by a long shot. For example, with small business web development for example and projects like that, Stage 1 and Stage 5 are non-existent as a rule. For a government project, this list probably has several sub-topics addressing the lifecycle. But this list is a good primer.

Development Life Cycle Resources

That’s right you need the tools. So you how to learn more what are the resources for building a software development life-cycle. There is also detailed analysis of common models such as,

  • Waterfall
  • Iterative
  • Agile

There is free tutorial called the SDLC Quick Guide. SDLC is the acronym for software development life cycle.

Lots of great information including the phases which I use mostly.

http://www.tutorialspoint.com/sdlc/sdlc_quick_guide.htm

So what tools can you use to create a software process for your team?

There is good ole fashioned Excel which works well for accounting software life-cycle because stakeholders feel comfortable with Excel and many of the functions that accounting software will use already exist in Excel.

I love Excel for managing software cycles because when you manipulate data you see what happens with e data right before your eyes. This helps with learning and give what you are doing, a feel if you will. The dashboard templates also allow a project manager to create a Visual Development with zero coding knowledge or macro creation.

For web development software, mind-mapping software such as FreeMind and the paid Xmind can double as a flow chart manager for small teams of five or under and also provide visual representations to stakeholders especially when the planning of requirements and the requirements phase are all a big lump phase of their own. Maintaining a visual map fo the project can help create cohesiveness.

http://sourceforge.net/projects/freemind/

Using the Google Documents software within Google Apps and also Basecamp can help tie given tasks and topics to a given stage.

Continue Reading

Gender Breakdowns of the Silicon Valley

It’s pretty obvious to most people that computer programmer, seems to have a male bias. Is this natural? The first programmer in history, Ada Lovelace was a woman and the inventor of the modern computer compiler also invented by a woman. The perception has changed to a male-dominated once and it’s flat out wrong.

The New Yorker’s article “Pandora and the White Whale” reports on the disparity of gender and minorities in Silicon Valley companies.

One organization that I think has the best idea to solve this, emphasizes computer science education in elementary school. Teach computer science in high school seems like a good idea but gender roles are already very established by then and one thing I wanted to add, people think computer programming is hard by then.

Code.org wants to introduce computer programming in elementary school before it’s a thing that boys do or a thing that math-geeks do.  I also think it should be taught before the perception becomes that it is hard to do. See, if we start taking an early approach that focuses on visual methods as well as mathematical models, which is the stereotype of how to learn software development, the perception that programming is for everyone and not this hard-to-learn, esoteric art,  will take root.

The New York Times articles “Reading, Writing, Arithmetic and Lately, Coding”   goes more into this idea and what Code.org does.

We all learn languages and that’s what programming is. If I knew that when I was 8 years old, I would never have waited so long thinking it was not my thing or too hard when it really isn’t on the basic level.  Mastery of development is another thing but that’s true of any discipline.

 

 

 

 

 

 

 

sc

Coding for WordPress

WordPress (WP) coding seems haphazard especially with plug-in injecting code and templates adding complexity to the mix if unique development standards are used. However, there is a logic to WordPress (WP) coding but the standards are pretty simple. When coding themes in WP, play nice with other developers by commenting on your work, adheres to the basic practices, and you can build on what other programmers have started.

The first step is to learn the most popular standards, those commonly held by a vast majority of web developers while giving an insight or two into less common areas of WP you may used. It’s in the corners of the WP ecosystem that educated guessing sometimes needs to replace looking for a strict coding standard to follow.

http://wp.smashingmagazine.com/2012/07/19/guide-wordpress-coding-standards/

I popped the hood on my template code recently and saw that code was pretty sloppy, partly from weird plug-in code and partly from pasting from other custom templates to create my template. Now a PHP parser will read through whitespace easily enough and doesn’t care too much if your code is sloppy but it may reflect poorly on your work for your human audience ie other developers.

In fixing this problem we know that properly formatted code is easier to maintain especially a year or two down the road. Deciphering code from another developer also makes the job easier and by doing it yourself hopefully that good programming karma helps you when you look at a foreign theme.

Line breaks and white space seem to be hampering the search engine findability of this website, as the content doesn’t start until line 472! So we started by formatting the code to best practices. Besides removing white space, we separated statements by a line break, place items on their lines, inserted brackets to define IF and other types of statements and it looks much better.

Continue Reading

What HTML 5 Adds to HTML 4

If you want to learn HTML 5, you’ve come to the right place. The new tags outlined in HTML 5 support several nice developers upgrades. It is a very efficient way to program cross-platform mobile phone applications.

Chances are that you’re confused about the differences between HTML 4 and HTML 5. This article outlines the three things I really like about the new standards.

Three big improvements to HTML 5 I’ve found are,

1. Tags to describe audio and video tags as well as more control over browser side cache and mobile phone usability.

  • article
  • aside
  • figcaption
  • figure
  • footer
  • header
  • hgroup
  • mark
  • nav
  • section
  • time

When looking through a WordPress site, you will see that the new types of tags are built right into the dashboard of the posting page. When you choose, “Aside” for example it creates an aside tag for that within the HTML.

These features are designed to make it easier to handle multimedia and graphical content on the web without plugins and API’s.

2.  HTML 5 tags seem designed to overcome the blandness of tags, for lack of the better word, although it seems to take a step back from full CSS control of the template.  It sort of restores some of the on-page pre-CSS in programming philosophy more than practice. Still I think its a pretty cool shift back given the mind mapping limitations of CSS. For many of us mere mortals it’s hard to imagine the look when playing with the CSS so it seems like HTML helps balance that back, in my opinion.

Here is a robust HTML5/CSS 3 Tutorial by MSVirtual Academcy

3. The feature set of HTML 5 is perfectly designed for smart-phone application development since it accounts for smaller screen devices in the new tags.  Those are the three big benefits I see in HTML 5 over HTML 4. What about you?

Learning Python – Four Kickass Resources

If you are learning Python, here are four kick ass resources that are awesome and understandable. Python is one of the common programming language taught in introduction to computer science classes. When I first started, that was the software language I learned first. And I found it easy to remember and clear to program, mainly because the operations are simple and there are very few commands.

Python is considered the easiest first programming language to learn. It’s a great way to build search engines, games and web apps while also having fun. That ‘s what programming is all about, isn’t it?

So here four great resources you can learn Python.

Learning Python – Four Kickass Resources

A tool I’ve been using lately to practice my coding is a web-based Python syntax generator.
It starts with the basics such as the PRINT function and learning about variables for working with data.

http://www.codecademy.com/tracks/python

If you get stuck, going to forums and asking questions is a great way to starts building knowledge. And making friends with other programmers. You’ll probably want to start by searching for a topic that addresses your issue. If you don’t find what you are looking for, making a new post that and clearly and concisely explain the issue.

There is a Python learning forum on Reddit that I use.

http://www.reddit.com/r/learnpython

On your learning Python odyssey, the acronym OOP or object-oriented programming will come up. Python is an easy to learn object-oriented programming language and serves as a gateway to other languages like C++ and Java.

Object oriented programming helps you create functions with data in addition to defining the data structures itself. This just helps with changes down the road as you define new objects within the code base without changing other objects.

If you’d like a free python learning class then the one I had fun with was the Udacity intro to Computer Science class. It offers video lectures, a built in code generator for practicing and a forum of fellow programmers. Everything is real approachable and light-hearted also. The class project is building your own search engine.

https://www.udacity.com/course/cs046

One of the best places for practicing is Learning Python the Hard Way which is deceptive because its the discipline not necessarily the technique that’s hard. You benefit by learning attention to detail and learning the Python language through repetition.

http://learnpythonthehardway.org/

So I hope you enjoy these four Python resources as much as I do.

How to choose an online university programming department

Focusing on the tools provided by an online university programming department will get you the most value for your dollar. The choices for an institution break down to,

  • university and four year college
  • for-profit colleges
  • community college
  • correspondence and smaller vocational training

University programming departments can bog you down in beginner courses but are the best programs for learning fundamental theory of software programming.

For profit and online colleges may balance theory with helping you find a job as a junior programmer. However for-profits like Devry have been successfully sued for exaggerating job prospects and even had to pay a fine as restitution. That said I still have the opinion that for-profits are more motivated i n helping you find a job then Big State University!

Community colleges programs such as game software development or an associate degree in web development is an excellent value for the cost. And don’t be surprised if you’re making more than your friends who just got into debt for $200,000 at a four year college.

27% of associates degree majors make more than their four year counterparts and in web site design and computer science programs, that’s were a lot of those high salaries come from.

Correspondence, vocational training and webinars, you have to do more due diligence on quality. You know Stanford computer engineering is a high quality program, but may not be sure about Joe Blow’s Make Millions with Software Development program.

What programs to learn?

What style of software programs and methodology will be a consideration. Learning web development, you’ll want a program that gets you into HTML5 and CSS3 early, as this is the basis for further study into mobile application programming

Junior programming gigs at companies like IBM, Google or Microsoft you may want to generalize more by learning the basics  of both Microsoft and Linux environments and studying coding with security in mind. Many CEO’s are taking this way more seriously now that they get can get fired for major security branches such as the recent firing of Target’s top boss in response to the credit card breach during the 2013 holiday season.

If a government programming job is what you’re after then you’ll likely want a Microsoft shop with a lot of training on SQL query interfaces and Windows 8 development and how that ties into older legacy systems.

What is the cheapest way to get a computer science degree?

If you are like most people, you don’t have a firm goal in mind! To me taking one class, that you pay for, will be the best step. If you take the class and don’t finish or don’t participate well, you likely aren’t ready for a full time schedule.

Taking a live programming class at a community college or local computer training center might hold you more accountable. Just because you work online doesn’t mean you can’t go somewhere else for class, especially if you have children or a slow internet connection!

A software programming school that matches your learning style will make it more likely you see-through and finish.

That is the best education investment of all.

Continue Reading

Mobile Application Development

Mobile Application Development, while remaining in the realm of broad industry platforms such as Android, iPhone/iPad, and similar mobile devices, is quickly becoming an area of focus for software development companies and web application development companies around the globe.

Whether you’re learning Cocoa, Spring, Flex, or any other mobile software development platform, the basics of application design still apply. Creating a usable, functional interface for your next mobile application can be a challenge, but, when using tried and trusted approaches to visual design and content architecture, along with core software development concepts such as MVC, CRUD, and application logic, you can present the end user with a user interface that is easy to navigate and provides a value beyond taking up pixel space on their mobile device.

If you’re interested in learning more about application development, pertaining to mobile devices, we will be posting articles directly related to mobile application development and training on designing for mobile devices.

Software Outsourcing

When outsourcing software development, beyond cost, you need to take quality and support into consideration choosing the right software development team to execute your design and functionality documentation. Typically when software outsourcing companies provide development proposals to companies they include their deadlines and further details into why they chose the approach they did, along with the appropriate milestones, with timelines that are hopefully within your project manager’s (and companies) deadlines.

Outsourcing firms are known notoriously for bringing in software engineers that may not have the experience necessary to effectively communicate between your company’s software project management team and stake holders. With that being stated, perhaps the best approach, beyond personally wanting to hire capable software architects is to ensure you have project sign offs established with the outsourced software engineering team leads.

In conclusion, what we’re really addressing with software outsourcing is that communication breakdown occurs often and there tends to be a requirement for hand holding. If you take caution when reviewing outsourced software development companies, and can take your time, you’ll find an development firm that understands your project requirements for the software you need developed.

If you want to learn more about software outsourcing, cheap software development, and freelance software development stayed tuned for more articles or ask us!

Continue Reading