Tuesday, December 24, 2013

Vacation

When you're working for yourself, you don't really consider taking time off.  You pretty much just work until you can't or get sick or something and then work doesn't happen anymore.  I know it's because I'm new to this whole assigning myself tasks thing, but I still seem to be having a hard time with it.  When I can just sit down and do as much work as I want, anytime I want, I seem to have a hard time slowing down to some sort of healthy, maintainable pace.  I start to notice this when I'm not really getting as many things done or can't think of things to do, but I usually just try harder making things worse.  In the future I'm going to need some sort of way to get things done and stay healthy (side note: I'm not actually unhealthy, just not very productive).

Friday, December 20, 2013

New GUI Platform

I used my useful coding project to test out a new GUI platform and things went better than I had expected.  I'd been looking at this platform for a while and finally found a solid use for the technology that was awkward at best before.  In addition to this new feature, there were several aspects that were automated and all of the corners were nicely rounded like graphics of the future.  They also have a very sleek size and color scheme.  I liked the overall presentation so much that I'm considered upgrading some of my other projects to have the nicely rounded corners.  The only problem that I can see with this is doing things too quickly and making a big mess, or getting a bit too futuristic too fast.  Don't ask me why exactly, but it seems like something I'll want to gradually do.

Friday, December 13, 2013

Useful Decisions

How much time exactly should I be spending on something that might not be a fully-realized project?  Today is pretty much the second day that I've been working on a GUI to help me organize some of the data that I've been collecting in order to help me stay organized and be more efficient.  So far, it's not really going to be a big let-down if I never use the code for anything because I haven't really spent much time on it.  But the further I get with the project, the more I seem to like it, so I kind of want to spend more time on it.  At the moment I don't have any important issues or projects that are going to be more marketable, so there aren't really many negatives to continuing my work.

Tuesday, December 10, 2013

Staying Current

I'm realizing how important it is to stay current with all of my documentation and paperwork.  When you do a lot of work and don't keep all the proper documentation up-to-date, it can be an overwhelming task to try and sort through all the things that have been going on, remember small parts of large projects, and what was important vs. what was just some random thought or some reach goal.  The better you get with keeping track of all the paperwork, the more you are going to know where you are in all of your projects so you can get actual work accomplished.  At this point it isn't really a choice, I have to update my paperwork to a point where I can efficiently make meaningful changes without feeling like I have to read several novels to insert one line of code.  Making changes while you are thinking about them is not nearly as difficult as making changes to things you haven't been thinking about.

Thursday, December 5, 2013

Technical Specifications

I think that as a rare follow-up to my last post, I would like to mention some of the key factors for writing a good technical spec document.  Obviously if it's a format document, that's going to be pretty easy, the format and any information explaining what it means.  For other documents that do things like highlight features, I want to keep in mind my intended audience.  I'm either leaving notes for an engineer so that they will know the intended purpose of the project (and possible explain a few not so obvious features), or I'm trying to explain something to the marketing division that might not ever actually see any of the code in the product.  Either way, I'm not trying to go into any sort of depth about the features that I'm talking about.  I want to give someone a very brief overview of what's going on, but not really any of the how-to that would explain some of the more private aspects of a product.

Monday, December 2, 2013

Struggling

Since I've been struggling quite a bit to stay motivated and find things to do, I decided to work on some of the easier tasks that I've been neglecting.  I managed to do some flowcharting and write up some very short technical highlight specs.  I think that the key to a good flowchart is that it should be fairly easy to write.  I know that I could have a flowchart documenting almost every part of code that I write, but that's not really practical in a business environment.  I also don't want to give out more information than my engineers will need to comprehend what they're working on, but just enough so that they will be able to quickly start working on any given project.  I've even found that some projects really shouldn't have flowcharts at all since the code itself should be well written to understand what it is that you're seeing.  This would be for projects with only a few connected parts or not that many features.

Wednesday, November 27, 2013

New Directions (Maybe)

Brainstorming day today was fairly successful.  I don't have any solid ideas yet, but I know the next step for expanding my technology portfolio and technically my family of products.  What I need to do is to start working with things like graphics engines.  I could start making fairly simple games with something that is already there.  This can really apply to a number of things if I'm going to be making demos.  For example, I could write a browser plugin to notify me when I have email.  I think that I would rather work with designing levels for a game though.  It seems like it would be something I would want to do.  I don't know what level of complexity is available for this sort of thing, but I think that the more complex the program the better.

Tuesday, November 19, 2013

Blog Thoughts

I did not accomplish anything today.  I've been going over the merits of whether I should post about not getting anything accomplished or not and I've decided that as long as I'm not being repetitive, it's acceptable.  In reality, today's not anything accomplished included reading some insightful financial articles about technology in the marketplace and how the spread of technology is affecting a lot of people.  I also did some more code browsing, trying to visit as many of my projects as possible.  Then I tried to convince myself that if I could just be motivated a bit more I could start optimizing my workdays and getting more routine tasks completed.

Friday, November 15, 2013

Ordinary Stuff

I've been spending more time than I like, but probably not too much, reading news articles, researching new technologies, and pretty much just sitting around trying to think of new ideas.  I have been going through the code I already have again, without making any changes.  I've been picking out what I feel are the most complex and meaningful files to display in the compiler.  Then I just kinda browse over the details for a while, not really getting too in-depth(since I should already know this).  I'm not writing any code, but the idea is to kind of keep all of my projects as familiar to me as possible.  I think that when I'm doing things like making decisions, coming up with new ideas, looking for things to do, or working on a new project that this will help me in some way.

Monday, November 11, 2013

Mental Health Day

Today was a mental health day.  I am a strong supporter of mental health and the ability for all employees (not just me) to take days off every now and then to make sure that they are staying mentally sound.  As part of business you do not want to take more time off than necessary or see employees doing so, but I think that as part of the math and science aspect associated with the field, you have to make sure that you're functioning at a consistent pace.  Sometimes people will work harder than they should to get something accomplished or wrap their minds around a difficult task.  It's a difficult judgement, but healthy people are going to be more productive.

Thursday, November 7, 2013

Distance

Today I spent a bit of time thinking about employees.  Having people that actually work under me is a lot further away than I like to think.  There are the basic things that I am missing like finished products, customers, job security, stuff like that.  Then there are the even less obvious things that don't have.  This would be things like a formal process for showing people what I have, a solid direction for where I'm going to take my company, and generally a way to talk to people to get them to a point where they would want to help.  This doesn't mean just mean telling people what I'm doing, it's a way to appear friendly when I'm not really in a position to be friendly, at least from a business perspective.

Monday, November 4, 2013

Learning Materials

I was going over some thoughts for new project ideas and thought I might as well do some blogging about some of the learning exercises and materials I've been collecting that I simply haven't bothered to mention.  A while ago I was directed to some sites that host legitimate, high quality reference materials (I kept links to the sources just in case).  So I have a small to medium sized reference library of technical material that I go through from time to time.  In addition to that, I also have some text books from online classes that I took through Microsoft (along with completion certificates).  I think that anything that the large corporations want to give away is worth having, which includes the classes and their corresponding text books (Oracle also has some high quality material, but classes are not free).

Friday, November 1, 2013

Market Trends

I can't tell if I'm spending too much time watching market trends or not enough.  I feel that my current observations have lead me to believe that I have a decent amount of work that may or may not be high quality.  The volume that I have so far seems to be decent.  My place in the market seems shaky at best.  I think this is where I haven't spent enough time watching the market.  If I was doing enough research I would literally know when I belonged and simply fit into my place.  Although this could have the opposite effect where you can't make realistic judgements because you have too much information.  Either way, market trend watching is essential and will even out over time.

Monday, October 28, 2013

Useful GUI

My next project is going to be to make a useful GUI.  I think this actually sounds absurd to type, but that's what I need to do.  I can't say for certain if this is going to be accomplished in a reasonable amount of time, but it's something that needs to be done.  I can just tell with these sort of things.  I've already started finding places where having a GUI would make my thought process more streamlined and reduce the amount of work to organize my infrastructure.  That should be way more than enough reason to justify creating a useful GUI.  This would now give me two official useful projects, although the GUI could eventually become a product, but I can't think of it like that since there isn't really a market.

Friday, October 25, 2013

Tech Conference Part 2

After going through about a dozen or so presentations, I realized that I was definitely not going to get the full conference experience by simply downloading all their slideshows (since the documents were basically also slideshows).  So, before I can make any proper evaluations about conferences in relation to my business goals, I may need to attend the live event.  Although, it wasn't a total loss since I do have information about all the presented topics.  This is not detailed information, but I'm a smart enough person to connect a few dots and figure a few things out for myself.  I'm pretty sure that if I were to attend this conference live, I would want to have these materials anyway.  I can see how with not too much effort, I could have some helpful reference material for myself.

Wednesday, October 23, 2013

The Tech Confrence

Maybe it's just me, but I think that technical conferences are a required part of running a technology business.  I recently missed the major annual event that the field itself puts on, but luckily I was able to browse through the materials that they made available online.  It's going to be an enormous task to go through all of the relevant stuff that was posted, and this could take me at least a few days.  So far all I've been able to do was go through all the topics and download all of the available documents and slideshows.  I think that since this is the first major conference that I've been aware of since starting a business, I have to at least go through all of the material that relates to my products in any way and decide how everything that was said is going to affect my business.

Monday, October 21, 2013

Useful Coding

I spent a little bit of time doing something that I'm going to refer to as useful coding.  This is actually a bit of a change of pace for me since everything that I do is usually either called a project, product, demo, or research piece of some sort.  Useful coding is not ever going to make me money or shown off in any way.  Also, I feel like in order to just code for that sake of coding, you can't really struggle at all with any of the parts.  Useful coding needs to be very easy to do.  I kind of like the idea of useful coding.  It makes my life easier without any of the visibility overhead.

Friday, October 18, 2013

Fun With Cleaning

I am going over some of my older projects to try and find ways that I could clean things up, make small improvements, or do that sort of thing.  I am taking notes as to where exactly I am in these projects.  I didn't actually go through everything that I've done, but some of the ones that I thought would not only be interesting to have notes on, but are a little more difficult to just start making changes.  So far, I'm a little worried about having too much information, which is very difficult for large projects.  I also hope that I'll be able to keep my notes up to date.  I do feel more informed about what I have and where I am though, so overall it was productive.

Wednesday, October 16, 2013

Staying Motivated

As part of my sad attempt to stay motivated, I have begun working with one of my older projects in the security/enterprise applications arena.  I haven't gotten a lot done other than reading through some of what is already there.  I had actually forgotten that I wrote a whole flippable GUI panel that I had never tested or implemented.  The code was there but all commented out.  I uncommented the code and removed all the errors that I found (since I think it was commented while I wrote it).  Now I have a nice starting place for doing some work at some point.  I'll need to make all the GUI elements look presentable, make sure all the functionality works, and possibly build from there.

Tuesday, October 15, 2013

Enormous Success

I'd just like to take a bit of time to brag about the enormous success of my spam/newsletter subscription success.  Not only do I stay well informed about the technologies that I choose, not only do I get to keep track of what I've read and haven't read with the standard email read message system, but I also get to have my own custom guide to the industry that I am going to be a part of.  This means that when the industry wants to tell me things, I am there to learn.  And so far, I have gotten some very informative lessons.  Obviously I've not reading every single article, but I think that it makes a difference to hear how the leaders of what I want to do handle themselves in not really similar situations, but situations I could imagine myself in years from now.  I think that if the leaders of my chosen industry have something to say, and I can spare the time to listen, then that's a good situation.

Wednesday, October 9, 2013

GUI Shuffling

Today was just more shuffling around of layouts.  I don't like anything about layout design, images, what my GUI looks like, or that sort of stuff.  I like solving problems and making things work.  But, this is technically a problem so I'm trying to fix it.  Obviously with avoiding working on layouts that's going to make me not very good at them.  And this isn't just things like skimming over the little details.  This is everything.  I can see how the more I work on them, the more I start to develop trends.  Things will be certain sizes, different functionality will be handled a certain way, and there's usually a sort of maximum amount of effort or detail that I will put into a GUI.  So, the more I work to expand my trends, the better my products are going to look.

Tuesday, October 8, 2013

The Manager

Manager needs to be a position listed on my careers guide.  That's going to be my position mostly, at least for a while.  But I need to keep the idea out there, even if it's just a reminder to myself.  I have to make sure that I maintain my todo lists on a regular basis.  I need to consistently have a series of tasks, outlines of how I plan to accomplish those tasks, and progress as to what I've been accomplishing.  I've been doing this, but I find that the work that actually needs to be done usually isn't listed in my task list.  This is something I have to practice.  I imagine that as I get better at this task, I'm going to start being more accurate.  With enough practice, the task system will make my work easier and more organized.

Friday, October 4, 2013

News Lapse

I'm not sure if it's worth mentioning that I'm trying to stay caught up with the news, but I'm going to mention it anyway.  For a while, for the first time in my career actually, I avoided the news for a bit.  I was so focused on new product development, organizing my ideas and tasks, that I just didn't feel like staying current with technology trends.  The longer I avoided reading the news, the stranger it seemed to start again.  But now I'm back and if feels good to be a part of current technology.  I'll try to make sure I don't worry about it too much, but I like know about current events.

Thursday, October 3, 2013

Aimless Wandering

After a bit of a distraction, well not really a distraction, more like actual work time, I have gotten back to my aimless wandering though experimental projects using newly learned technology.  My most recent focus is randomly reading through tech manuals that I have just lying around for no good reason.  At times you tend to overlook these things because there's a lot of material in them that you already kind of know.  But right now I'm really avoiding doing my main development work, so this is still productive.

Tuesday, October 1, 2013

The Finer Details

I've been working on adding smaller features to my existing products.  I think that in terms of new product development, I've been going a bit too fast lately.  I need to take some time to just think about what I have and the ways that I can make something that is going to be more customer friendly.  I want to not only make products that I would enjoy, but people that aren't me might also enjoy.  At the moment I really haven't put a lot of effort into presentation, so there's a lot of work to be done.  I'm still working on the most basic features.

Friday, September 27, 2013

Slowing Progress

Technology break has been much slower than expected.  I'm not really sure if this is good practice or not, but I found that getting caught up to where I was is a bit more work than I thought it would be.  That's mostly just a bit discouraging, but you get over it.  I have projects in mind so that is quite helpful motivation to keep going forward.  I know that my experimental projects are going to be a bit of a reach, or at least not my most important immediate goals.  It's best for focus to think more about your most immediate goals.  So, I'm trying to keep things light and not worry too much about my learning progress when it's not really essential.

Thursday, September 26, 2013

Quick Ideas

Had to take a break from technology learning to do some emergency coding.  Not really an emergency, but ideas that needed to be written up immediately.  When you have really good ideas, you need to get them prototyped as soon as possible.  This helps the creative process immensely and ensures that you don't just push them aside and forget about them.  At the moment they aren't really anything special, but I now have two new projects.  I've also started thinking about projects in a slightly new direction.  I think that this new direction is going to be a big financial success and might even help with my overall creative process of thinking of new things to work on.

Tuesday, September 24, 2013

Technology Day

Today's going to be a technology day.  The beginning of a technology interval.  I'm still taking a break from new feature development, so I'm filling my days with something.  Keeping current with technology is vital in any sort of engineering field.  I know that many companies offer free training, or company discount training.  I can't imagine any companies that would actually discourage employees from learning more about their job.  I know there are a few companies that even offer free courses to the public.  I feel good about my improvement as a well-rounded engineer.

Saturday, September 21, 2013

Company Summary

After thinking more about my sales presentation, I think that I'm going to need some additional materials to go along with it.  This means that if someone sees my presentation and says, "alright, I'm interested, but I'd like to know more" then I will have something to show them.  This still needs to avoid anything that I need to keep secret like technical information, diagrams, company secrets, and basically anything I wouldn't post to this blog or release to the general public.  So far, I have some general business goals, an overall executive summary, but not a whole lot in the way of company summaries.  I think if I phrase it as a "company summary" I will have more success with my efforts.

Thursday, September 19, 2013

Roadmap

It is officially time to get down to business.  I have some solid entries into my organization, but now what I really need is visibility.  I'm not ready yet to go public or release any private information, but I do need a way to let people know what I am working on what why they should be interested.  At the moment, this is basically going to be a sales presentation aimed at potential investors.  The idea would be that if someone is interested in my ideas, might want to invest, I'll have a sort presentation ready to give them.  Hopefully this will include all the information they'll need to know to invest, but not too much if they decide they'd rather not invest.

Wednesday, September 18, 2013

Science News

I think that I should discuss my vaguely related hobbies in here.  It's not exactly relevant to my discussion of my company, but I think that my well rounded mental health is very important to my work day.  When I'm feeling like I'd done enough work for a while, I'll usually start going through back issues of wired science.  They have an amazing online archive that holds every article they've ever published.  To make things even more interesting, I keep bookmarks of my favorite articles.  I started reading their magazine for their technology writing, but I found that they have some very interesting authors in the general science field.

Tuesday, September 17, 2013

New Format

Now that my "vacation" is over, I have decided to officially announce my new format.  I will be switching from the typical three paragraph posts to a more easy-to-read one paragraph per day style.  I will still try to include most of the same information, but it will be friendlier for my readers.  I have a few offline posts from vacation since I haven't actually stopped working.  There is no way to read these, but I'll consider setting up an email if there is interest.

Saturday, August 24, 2013

mental awareness

Steady progress.  I can almost see the end of the first round of changes.  Almost.  Probably another day or two, hopefully.  Then it'll be time for the second and third rounds of changes.  I don't know if that's going to happen anymore.  I can literally feel the motivation draining from my body.  I don't think that's a good sign.  I've noticed that my work is already getting sloppy.  In places where I would have made noticeable improvements at the beginning, I'm starting to just skim over.  I'm not sure if it's going to be helpful if I just let my quality slip.

I think that what I need to do is to start thinking about where I'm going to go next.  If I have a destination in mind, I won't be forced to continue with this project while my pace is starting to slow.  The only problem is that I don't have anywhere to go next, so this will be my mental note to start doing some planning.  The code restructuring project is something that I should be doing at regular intervals.  If I can plan well enough that is something I will do.

I am already noticing that I have a better mental awareness of my overall company infrastructure.  I think that by going over all of my projects, obviously with less severe changes in mind, on a regular basis I will start to be capable of having a mental organization of everything that I'm working on.  This is going to be a big step for me for decision making, new ideas, and most importantly, implementing small changes across a large project space.

Friday, August 23, 2013

ignoring ideas

So, today I'm going along, doing my thing.  Whatever, no big deal.  And I notice another one of those ideas that I should probably think about.  And I get to thinking, if these are really good ideas, shouldn't I write them down?  I guess having a blog post about not writing them down is something.  But so far I've had several ideas that I just kinda think about while I'm coding and I know I'm not going to implement either of them.  I might eventually.  I haven't actually considered either enough to even decide if they are actually good ideas or not, so that's part of why I'm not implementing them.

I think that when you start to make too many changes at once, it's important to stay as focused as possible.  Even if all of the ideas that I thought of are good ones, it's going to be a mess to try and code them all at the same time.  I would have several different projects in several different states of completion.  Chances are I would start to get tired before I was done and just start doing a lazy job.  Well done projects are typically within your skill level without having to reach too far above your head.

Yet I know that my ideas are at least worth considering because I keep thinking about them.  I know that I don't want to just forget them.  I guess the real problem is that they are now actually considered temptation.  They are tempting me away from doing a consistent job by seeming like an improvement.  If my ideas are actually good ideas like I think, I will still have them when I am ready and capable of implementing them properly.

Thursday, August 22, 2013

observations and stuff

I think I'm getting close to the half-way point.  Then I probably have another round or two to go.  Now that I think about it, this is going to be a major turning point for my company.  Or maybe just a minor turning point eventually.  But this is where I see what's actually involved in making changes to all of the products in my company.  I will need to be able to do this.  I have created everything and if there is ever a problem, something needs to be explained, or things just need to be updated or upgraded, I will be the one responsible.

There is no visible progress yet.  More text that doesn't accomplish anything.  If you were working at my company you might appreciate what I'm doing.  You might not to be honest.  There are more files.  Every project now has slightly more to it.  Well, every project that I've gotten to so far.  But when I'm done with this first round, every project in my company will have more files.  There will be more rounds before I start working on anything new and those rounds may or may not add more files. People might like the next round of changes more, they may not.  But I have already decided that all of the rounds will improve my code.

I've already noticed that I'm skipping over things.  Sometimes I skip over little things and make notes of it.  Sometimes I'm skipping over big things that I might go back and change eventually.  The big things are going to require more thought.  I think the most discouraging part of this so far is noticing improvements that I could be making while I'm coding.  Yeah, I should go back and make the necessary changes.  I will eventually.  But I just finished that part.  There's so much left to do, I need to stay as focused as possible.  I think I'm doing a good job.  I like what I've accomplished so far.

Wednesday, August 21, 2013

definitions

I don't know why I have a build folder and a demos folder.  I can explain what these things technically mean, but their purpose doesn't always seem clear.  Right now, my build folder is where I right click, create zip file, and then rename zip file and move to my demos folder.  That's about it.

Alright, if you really want to know, I'll just go over the definition of these things.  A build is all the parts that are going to be in the commercial release.  This means that I have to remove all my source code, todo lists, and drawings.  I also have a file in every one of these that will launch the application.  People don't like their computer programs to be more complex than clicking on a little picture and it starts.  I do not intend to disappoint them.

The demos folder is where I keep my zip files.  So if I'm in a pretend sales presentation, or meeting with an investor, or in some other situation where someone wants to see me click on a little picture and launch my application, this is where they'll find that.  Except that you get to unzip it first.  I know, I know, I need to invest time in an installer that will unzip the folder without the unzip menu (there's something soothing about an install wizard).  So the demo is what I might actually sell someone.  They shouldn't ever see the build folder (until after they unzip or install).  I guess in conclusion, I feel prepared.  I'm just like a real company, except without any money or employees or customers.

Tuesday, August 20, 2013

progress

Progress is slow at best.  Many things are being accomplished, but this much work was not expected.  Blog posts may suffer, but the blog is not what is important.  This?  This is simply an extra to heighten my visibility.  The heart of my company is the code.  Respect for the code is earned with my ability to maintain it.  With my ability to actually keep what I claim to have.  I can not simply go rushing into my code base and start making changes all willy nilly and not expect consequences.  There will be consequences.

No, there won't.  Because I will finish this round of changes.  Sure, it's tedious.  More tedious than I ever could have imagined. But I can't just stop now.  I don't even have a backup.  I can't go back.  Alright, disregard that moment of panic.  I have backups and I'm sure they're just fine.  Pretty much where I left off.  Manual backups tend to be fairly accurate.  Things are going well though.  I have accomplished things.  The code is still functional.  I can't actually show any visible progress, but I know it's there.

I could just stop now.  Call that good enough.  I've made a few changes, I pretty much remember what I was doing.  I'll probably have the motivation to continue at another time.  Of course that's what the unsuccessful company would say.  That's not me.  Respectability is within my sight.  Well, maybe not that, but at least consistency.  That should at least be a minimum.  Does your code reach your own coding standards?  Most of it.  Pretty much.  I just have to keep going because I know I can get there.

Sunday, August 18, 2013

propagating changes

Now that I've got a basic idea of what I'm doing, I have to go back through all of my projects and apply the appropriate changes.  This is not interesting blog material.  I just realized that applying these changes might be a lot more work than I thought and I haven't figured out how to post about it.  It's basically just a copy/paste thing, except that it's an idea and I can't actually do that.  So, I have to change everything by hand.

In other news, I'm starting to really like the way things look.  All this making things look pretty without adding anything interesting is just swell.  I like to imagine how happy my future employees will be after I make these changes.  They're going to like working for my company.  I'll have the kind of code that people can really talk to their friends about with respect.  They'll learn something from my work, hopefully.

I probably won't do a repeat post tomorrow.  I'll probably have to do repeat posts for a week or so. I guess I could talk about my copy/paste strategy, but I'm considering making that a company secret.  You have to actually work for me to learn how I do things.  At some point in your life you've made a contribution to my business in order to learn my secrets.  I don't know, something like that.  I'm sure I'll think of something to write about.  Or I won't.

Saturday, August 17, 2013

new style

Teaching yourself new things is not an easy task.  It's even harder when you do not have anything to learn from, but you are just guessing.  I have a general idea of what I want to do, but I don't have any reliable materials to work from.  To get to this imagined point, I've been pretty much just guessing as to how to get there.  For example, some of the points I'm trying to reach include, making code easier to access and hiding unnecessary materials from people that don't need to be there.

It seems like a pretty simple idea.  If it is, I'm sure everyone that reads this post will go and do this in their code.  That's possible.  This is a public blog for anyone to read and try out.  All you have to do is think of an area of your code, then make it more easy to work with for someone that may or may not have your whole code base memorized.  Then you find another part of your code and bury that in more code.  This will create a separation between what you want changed easily and what may not change ever, except for possible bug fixes and that sort of thing.

The execution of the idea is a little more complex.  I think that if you were staring at my code right now you might have a general idea of what I'm trying to do.  Maybe you'd learn the whole thing right away and go implement this with your own ideas.  The difficult part for me has been not having an example to work from.  I have all the basic concepts that everyone else learns, but you have to be able to put them together in a way that is going to be reliable and ready for public consumption.

Friday, August 16, 2013

careers

Today was an important day in the history of my company.  I decided to create a business documents folder in the internal documents section.  This meant that I put all the other documents in the engineering folder, which makes sense because only the engineers will read or care about what those documents have to say.  The business folder now has my corporate profile (it's a brief company history and description of my departments, which is roughly similar to a blog post I have) and my newly added careers list.

The careers list was huge for my company.  Now I can actually start to see how things could start to develop into something that actually resembles a company.  The idea was to not offer people tasks or jobs, but to try to generate enough content so that a sensible person could actually feel good about staying with my company for a long time.  This means that they have a steady source of income, enough work so that they won't ever feel nervous about not having anything to do, and the possibility to advance their life as the company succeeds.

This is a very important part of my growth as a company.  I know that I am capable of thinking of ideas and creating those ideas, but becoming successful is a lot more than having skill in a certain area.  A full company contains a lot of areas that most people might not even think of when simply practicing their skills.  I see it as a huge advantage to be able to see the direction my company could go in, in the near future as I am working on my product line.

Thursday, August 15, 2013

packaging thoughts

Random future thoughts for today:  how would packaging products affect my ability to market them?  So, sometimes I think this isn't that important of a question, but the more I think about it, the more I can tell it needs to be answered.  If for no other reason, because I will need to plan launches and presentations around what people are actually going to see.  When a customer sees my product, this is exactly what they are going to see.  I need to know what that is I guess for my own motivational purposes.  I could just code things at random, but I like to imagine that I'm working towards a larger picture.  That all of the pieces are going to fit together and fit together well.

The positive side is that people are going to get more out of a packaged bundle.  So, you buy an app in the store and get some sort of main purpose and some extra side features.  That's about what most people expect.  I buy a calendar app and it's going to have something that tells you what day it is, with some side features.  If your side features aren't that exciting, people might not use your app for very long.  If your side features don't even sound interesting, people might not bother to ever get your app.  So right away the advantage is going to be more potential customers and customers that use the product for a longer period of time.

The negative side is that I want the actual company itself to be as large as possible.  A company that offers 100 products might seem more credible than a company that offers 5.  Sure, 5 really good products can beat 100 cheap ones, but I'm going to be working with the same products regardless of how many of them there are.  I think that having a more credible company will be more likely to get people to consider repeat visits.  This means that I could be boosting the sales of other portions of my company by keeping products seperate.  I could always bundle products and sell them separately, but if people find out, I don't want to sound cheap.  More on this later when I'm closer to a decision.

Tuesday, August 13, 2013

market research

I started doing a bit of market research.  This would be the more formal kind, since most people have some idea of what new technology looks like either through blogs they read, advertisements on TV or the internet, or things they hear from people they know.  My version of formal research isn't really anything too interesting, but it's a starting point.  I was browsing CNET, previously known as download.com and I realized that there are a lot of developers out there with products of one form or another.

I've been to download.com a lot of times in my life, but I've never been there before with the mindset that I might have a product in the same field as these other products.  There are a lot of things to consider aside from the actual ideas that are posted to their site.  I think one of the most important things that I noticed was the important of getting reviewed.  The most popular products in each category got reviews.  I don't know if they were popular because of the review or if they were reviewed because they were popular.  What did seem obvious is that the poorly reviewed products didn't do as well as the ones with good reviews.

The other thing that I found fairly interesting were the types of things that the general public would post about in their comments.  Comments can appear on any product and usually don't even refer to the actual review, but I still read the comments so that must mean something.  People seemed the most concerned with how they felt the product treated them.  The casual consumers were worried about the complexity of the directions while more experienced users all seemed to have a specific purpose in mind.

Monday, August 12, 2013

educational materials

As most companies should?  As most companies do?  I don't know, but I have a very short educational series for potential employees.  It's not really a comprehensive series at the moment, although I have considered expanding my topics to prepare someone in all aspects of the work that is part of my company. At the moment I have what I think is the most basic guide possible for someone that already works in the industry but may not be familiar with the code I have. 

Although this seems like a good thing to have around, I have been debating on the actual usefulness of the project.  I think that the actual useful part for the basic instructions would be to post videos to YouTube, advertise, and then wait/hope for followers.  If someone likes the series enough, they would be a potential new hire.  That seems reasonable since most experienced engineers probably don't troll the net for beginner videos.

If I wait until I expand my lesson plan, I could make an actual course with required content and maybe even tests (although technically that's the code).  I know that I'm going to have to go through some to most of it anyway.  I currently have documentation, but I don't have anything outside of pictures that actually demonstrates how the technical details work.  Perhaps I'm just assuming too much though.  I think that when I have the money to hire someone, getting them to be productive won't be quite as hard as I imagine.

Friday, August 9, 2013

compatibility

Exciting stuff today.  I was going to add some manually generated templates to of of my program.  One of the types of things where a user can just kinda click around and get some examples of how things should look or get some general ideas.  And I completed messed myself up by opening the text files in notepad instead of my compiler.  I saw a bunch of random data everywhere and couldn't figure out how my program was still working.  So, I made a few changes to what I thought it should look like to see what happened.  Then before running the program I opened the new file in my compiler and found that it looked even worse than before.  Oh yeah, notepad wasn't showing the line feeds.

I made the changes to what it looked like before, but then I started thinking about compatibility issues.  I have no idea if this will ever be a problem.  I didn't know that sometimes line feeds just aren't read.  That's something I don't want to accidentally run into a while from now when it'll be a lot more work to deal with.  So, I changed my format to a character that I know is going to always be visible (On an unrelated side note, I also just realized I should probably ban format characters). 

After changing the format, the save, and both the read methods, I think that it's been a productive day.  Overall, strong improvements were made to the way that I'm writing code.  I'll have to remember to think about things like this for all of the code that I write.  That way I can say that I'm actually becoming a more well rounded engineer.

Wednesday, August 7, 2013

accomplishments

Big board day today!  I guess that's what I'm going to be calling it.  Going over the big board makes me feel good about myself.  It's like, "wow, look at all this stuff.  I've been accomplishing things."  It's one thing to have a list of ideas or products, or outlines like that.  But big board lets you know exactly how far you've gone.  And the more you accomplish, the more stuff there is that gets added to the list.  So, even when I haven't been doing that much for a while, it's not like I can ever go backwards here.  It's just more stuff that gets added to the board.

A few notes so far.  I noticed that I haven't been keeping up with my documentation at all.  Lately I haven't even been trying to keep up with documentation.  I really just don't like that part, but it's required.  People just don't want to work with undocumented code.  Even if I have the whole thing memorized, it just looks lazy that way.  I think that sometimes I just get too excited about things and if I slow down a bit I'll be able to make sure that I properly maintain all the parts instead of just the few parts that I enjoy doing.

I guess this also means that now that I'm running out of obvious ideas and features to work on, I'm struggling a bit more with getting things done.  I'm not actually struggling, that's a bit of a harsh word to use, but I don't look foward to going to work everyday like I do when I'm working on a feature that I find fascinating.  Yet I know that this part of the job is what's going to make me really proud of what I've accomplished.  This is the part where I can look back on my work and say, "I like what I've been doing here."

Tuesday, August 6, 2013

todo lists

Creating todo lists was the objective for today.  Usually this is a fairly simple task because I'll make notes while I'm working of what I'd like to accomplish and what I need to remember that I might have skipped over or where I've taken some sort of short-cut.  But, I was a bit lazy with my planning lately and had to just create new todo lists and remember where I was, what I wanted to work on next, and what might be interesting to have in the future.

This is my least favorite part of organizing my stuff.  I've already thought of all these things while I was coding and now I have to put seemingly useless information down in text.  I know I'll be able to remember where to go when I start coding again.  But this is just complaining.  I know that the whole point of todo lists is to have first a list of projects, then each item in the list has an amount of tasks that can be accomplished.  When I reach a point where I just can't bring myself to do anymore code, the idea is that this is the place that I'll turn.

In addition to my neat available task system, I also have a big board where all the projects are divided into areas of overall completion (I think this is an internal document though).  The best part about this system is that I add incentive to completing tasks.  I complete some smaller objective and I get to fill in the big board that the project is that much closer to completion (as coding projects go).  When I start feeling discouraged, the big board is where to go to feel good about my company's overall success.

Monday, August 5, 2013

promo writing

Taking screen shots was a lot more work that expected.  Although, my real problem was not keeping myself up to date.  It's been a long time since I've taken screen shots of any of my products and things have changed dramatically since then.  So, I have to start every app and go through it's basic functionality looking for anything important that might need to be mentioned in a public promo.  Then the fairly simple task of sizing the screenshot for a web page but still making sure that someone can figure out what it is they're looking at.

Then after that was copying logos into the right directory and writing product descriptions.  I'm still not as far along as I'd like to be, so I'll probably either work late tonight or continue working on this more tomorrow.  But now that all of my products have at least some sort of representation and what is represented is the most recent version, I'm starting to get a lot better mental picture of what my company looks like.

I'm not sure how much time I would actually spend on this (or how much I care), but I think an interesting follow-up to today's work is going to be either a slight change to my promo batch script or a series of promo batch scripts.  This way, I can launch all of my promo materials with one script and hopefully (if I care enough) I'll be able to group the products by their respective sector.  The visual separation of the promo materials is one of my favorite ways to think about my companies structure.

Sunday, August 4, 2013

org day

Now is the time for the most dreaded part of my work.  Trying to think of new ideas while organizing my current ideas.  What do I write about?  Today I thought about a bunch of stuff that I didn't like?  Then I considered the projects I already have, but couldn't decide on any new features.  Quiet the exciting day, and right as I was starting to really get things going with my blog.  Well, I'm just gonna prepare myself and say that I'm blogging too much.  Blog posts have too much content and are posted too often.

So anyway, after deciding that I didn't like any of my attempted ideas, I went back to shuffling papers around.  Digital papers of course.  Need to write some new internal procedures (since I still find this part more difficult than it should be).  Then I'll need to follow those internal procedures.  I figure if I just do this often enough, I'll have my company organized quite quickly.  The way I see it, I'm technically creating internal procedures if I can think them up.  Then afterwards, I'm just executing the tasks I've already decided on.  What could go wrong?

Friday, August 2, 2013

unexpected day off

Talk about outrageous!  A day off yesterday and not even a courtesy post!  Well, I am thoroughly ashamed of myself.  Actually, I'm not because I had a virus on my computer and I spent yesterday figuring out how to remove it.  It turns out, I had some plugins that I had to uninstall from my browsers.  That about about the extend of the virus nightmare, although it did take a long time to figure out and now I have to change all of my passwords that might have been compromised.  There's no telling how long this virus might have been there.  And yeah, this is a legitimate complaint.  It takes a long time to think of a new password, especially something that is both secure and memorable.  And on top of that, I was very proud of my password system and now I have to changed the whole thing.

Oh well.  These things happen, life moves on.  It's not like anyone was hurt in any meaningful way, I just have to remember some new stuff that I wasn't remembering before.  In the meantime though, I was able to get quite a bit done with the old code upgrades.  I have one minor change to make, but I don't think I'm going to bother with that right now.  It mostly involves shuffling around my architecture without really changing or writing any new code.  I'll probably spend a while testing my new code and updating and tests that may have been affected by the current changes.  Functionally and visually, the project should work almost exactly as before.

Now is the time where I will need to stop coding so much and start focusing more on organizing my company.  When I get organized enough to be working on my todo lists, that's probably where I'll start doing actual code again.  Before I get there though, I have a lot of work getting the rest of my infrastructure up to date.  I have almost no documentation for all of my most recent projects.  These will need to have at minimum the same internal visibility as all of the previous projects.

Wednesday, July 31, 2013

newsletters

I guess I'm a bit behind the times, but I haven't gotten around to setting up a decent RSS feed reader to get all my news from.  Instead, I decided to set up a spam email account and subscribe to a few choice newsletters instead.  I feel that getting the news on some sort of a regular basis is something that people right out of college don't always think about.  For a while I had a few sites that I would go to, but now that I'm starting my own company, I decided to try and get more targeted news.

Just to make sure that everything is nicely organized (because often times I just ignore things that are disorganized) I created a new email account just for receiving and sorting newsletters.  I've signed up for newsletters from all the major companies that I could think of that would support the technologies that I might ever work with.  This includes all the languages that are part of my products and articles about marketing, management, and other various executive type topics.

So far the results have been surprisingly good.  I've gotten to view online developer events, received developer digital magazines and browsed through a few high-level corporate articles about advertising and marketplace trends.  What I think is probably the most important aspect of the newsletter subscriptions is that I feel in some way obligated to at least browse through the emails.  I don't know about other people, but I like to feel like my inbox is under control.  And that's when I'll hopefully noticed things like security updates and bug fixes.

Tuesday, July 30, 2013

log files

Today I finally decided to venture into the world of log files.  I know, I know, it's not a very exciting portion of any program, but I'm sure as most coders have noticed at some point in their career, most to all programs have some form of logging.  This logging can be anything from simple system messages to complex server logs.  So whether you're keeping track of sent emails or logging errors with the system, logs are more common than one would think.

Yeah, not the best intro in the world.  I guess that sums up how I used to feel about log files.  But I actually reached a point in my coding where I decided that creating log files was actually necessary.  I feel that I am going to be more productive now that I have a system to log output.  It wasn't a quick process either.  I spent a long time just going through console output.  Now I have a system where my standard messages are logged to a file and my most current debug session is being sent to the console. 

The log file has both a short term and a long term solution.  I can keep track of what's happening over time with extended usage and more quickly look at specific areas that I'm trying to work with.  When writing this I still feel that I'm not actually conveying the importance that I've just created.  The ability to quickly change the debug output of large portions of code will allow me to switch between simple method debugging and complex process debugging.  Without doing this, I would have been getting in my own way.

Monday, July 29, 2013

visibility

Today I realized my mistake.  I should have just posted less yesterday.  I'm working on the exact same stuff, but now I have less to talk about.  So, when you think about it, what good did I really do by posting a bunch of stuff yesterday when I could have just copy pasted today?  Oh sure, there was still actual work done today.  Yeah, I know I could just talk about that things I'm actually doing.  Whatever.

I think today I need to talk about visibility.  This is just going to be for my own sake, because I need to think about visibility more.  Other than this blog, I currently have zero visibility.  Oh sure, I've briefly mentioned to friends and family that I write code, but that's not exactly being visible.  My problem is that being visible asks a lot of questions.  I like to solve problems.  I don't like worry about things like, how difficult is it going to be for me to compete in the marketplace.  If people hear my idea, are they going to be able to copy it?  If I go to the doctor, will they tell me that I'm actually sick?  These aren't questions that I like to ask.

Yeah, I think that I got a bit ahead of myself when I spoke to an investor.  One investor has been spoken to and I have not heard back from him.  He seemed to like my idea, then he didn't.  That's not exactly getting my ideas out there in any way.  So many questions though.  I don't have patents on my ideas, so if someone wants to/can copy me, I couldn't legally stop them.  I guess that kinda assumes that people would want to copy me though.  I wonder if that's a mistake.  I already have some vague technical notes, but those barely explain things to an expert in the field.  I haven't even tried to imagine what other people would think.  I know when I spoke to that one investor he vaguely heard what my idea was, but I did feel a bit under-prepared.  I need to go to the investor store and take some statistics.  "Investor guy, would you rather I publish, or keep researching?"

Sunday, July 28, 2013

updating and complaining

So, the code update project is turning out to be a lot more work than expected.  Yeah, I had a lot of code in place that needs major changes to keep up with my current standards.  What I didn't remember is that the project itself is fairly complex and needs to be updated when the code is changed.  This means I'm going in there and changing small parts of a dozen or more files for one set of changes.  It's not really as bad as it sounds, but at the moment I'm a bit discouraged that I still have a lot more major changes to make. 

The worst part about doing this is that I am making no new progress.  Everything will function exactly as before, and what's even worse is that I'm not even upgrading my skill set.  My motivation for this particular project is simply the fact that I will know I've coded everything I possibly can to the highest possible quality that I know how.  Sure, this might not be a realistic goal, but hopefully it is.  I know that this is better than just abandoning my older code.  I can already tell that the longer I let it just sit there, the harder mentally it's going to be to bring everything up to the current standards.

There's gonna be a bright side to this as well.  I'll know how capable I am going to be when it comes to maintaining all of the projects I've been working on.  Most people that just write code don't really think about this.  I didn't even really get it when co-workers would tell me about the difficulties of supporting past projects they've worked on.  But the mental effort that goes into switching between things that have not been worked on for any amount of time is much larger than expected.  I think that the hardest part is learning something that you already have mastered.  It's not going to help my technical abilities in any way, but it is required if I want to keep all of the projects that I have created.  I made them and own them and need to be capable of working with them if that is what is needed.  For example, the updates I have made most recently are for a project that I will combine with the previous project.  If the projects have noticeable differences in quality, that's just not going to be professional, among more obvious problems.

Saturday, July 27, 2013

updating old code

Today I am updating old code.  I've noticed that the more I code, the more I'm learning how little I know.  Yeah, that's blatantly cliche, but I'm talking about things that aren't really part of my useful scope of knowledge.  Well, not at the previous point in my career.  At some point in my life I probably would have learned these things in a more traditional way, but now I'm learning them out of necessity.  I can't have users creating usernames that accidentally crash the network.  I would like breaking my product to at least seem difficult for troublemakers, nevermind for creative people that simply typed the wrong thing into an input box. 

Really, the updates aren't even all that important.  I could have simply banned certain input.  But I think my users will appreciate having more creative options.  I know most people won't ever notice something like that, but as a new company I have to take my advantages where I can find them.  So I attract a few tech-savvy people that will notice this change.  They might mention my app to a few of their tech-savvy friends.  Now I have a few more customers than I did previously.  Yeah, that's might not even make me a lot of money, but with zero current customers, who am I to judge?

Looking at the optimistic side of this approach, the more I code, the more I'm going to learn these little things that I'll be able to implement to attract a few niche users at a time.  That's still a few more than I had before.  Not caring about these niche users is a problem I'd like to have.  But until then, I'll keep improving my quality in any way that I can.

Friday, July 26, 2013

core tests written

I like what I have completed for my testing.  I now have coverage for what I consider to be the most important and unique core functionality.  I still have plans to expand coverage to some of the more utility type functionality, although most of that will not affect the core operations of the product.  That is going to be mostly for testing for bugs and other general automation purposes. 

I also did some routine maintenance to some of the functionality that I was testing.  This isn't going to change the functionality or performance in any way, but it will make the code more pleasant to read.  These are minor changes, but I'll have to make sure that I remember to create a backup. 

I still have some code left to document that I've been meaning to get to for a while.  The part that I'm looking forward to is expanding the complexity of the existing tests.  All of the basics that I wanted to accomplish are done and now I can focus on meaningful upgrades to the core set of tests.  I think for now I have completed what I wanted to for this project and it's time to start thinking about where my energy is going to be best spent.

Thursday, July 25, 2013

my first day off

I think I'm going to call today a day off.  I called into work sick today.  That's what people would normally do when they're working in an office.  You don't have to actually be sick to take a sick day, but it does let everyone that you work with know that you will not be accomplishing anything today. 

I like this policy.  Although technically I did accomplish things today (as I used to for most of my sick days), I did not accomplish enough to actually feel proud of my work.  I woke up late, I had things that weren't work related to do, etc, etc.  What I did accomplish will go well with tomorrow's post, so I won't give too much away.  But look forward to a good post tomorrow!

Wednesday, July 24, 2013

testing

So, I'm about half way through my first round of test writing.  I'd say that I'm probably getting somewhere around 80% test coverage.  I'm not explicitly testing everything, yet.  I also haven't even attempted to get into any of the more complex situations.  What I have so far is going to be a fairly basic, yet thorough testing platform.  Being only about half way through the product, I obviously haven't gotten to all of the features I would like to have automated.  Yet, this is the point where I can see where I'm going.

I think that at some point in the future I'll probably go back for at least one more round of test writing for this particular project.  Extensive test coverage (which is what too many rounds of test writing would be) is usually for large teams that have investors and customers.  The tests are most helpful when developers have to fix customer submitted bugs often.  Tests are actually kinda useless when major changes are made to a product (although, it depends on the changes).  But, I do not have any of these things.

I see my testing as an advantage in two ways.  One, it improves the marketability of my products.  If I'm trying to sell this to someone, my automated tests can be used both as proof of my professionalism and in certain cases, an entry point into the technical details of what I am accomplishing (although, I will have to consider how open I will be with my intellectual property).  The second advantage is that it gives me hope that at some point potential employees will be impressed with what I have accomplished.  If someone if going to spend any amount of their life working for me, on my code, they are going to need to be impressed with what I have done.  I personally would not work for a company that I thought was either unprofessional or not going to be successful.

Tuesday, July 23, 2013

practice

Today the test suite was started.  I already had an outline complete with classes and method stubs, a setup, and some utility functions for bringing in test data.  But I was finally able to create some of those important changes that will basically be reproduced with some slight variations for most of the rest of the tests.  I think what was the most important thing that was accomplished was a slight performance improvement.  Nothing is finalized yet, since my overall performance based architecture is still very new, but the changes seem to be the best possible way to solve the problem, regardless of how the new architecture works out.

And yes, this does bring me back to the discussion, what if I had been practicing test driven development from the beginning?  Would I have made these errors in the first place?  I think that when starting a product from nothing, we sort of assume that the basic, "guess and check" methodology will work best since it appears that we are actually accomplishing something.  Yeah, it does work and it makes us feel good.  I probably won't stop in the immediate future, but the more I design tests that just feel awkward with the style that I've been coding, the more I want to switch to test driven development.

I think that practice is the keyword for today.  When looking at a rather small "pile of code" one can not begin to think of it as one would a corporation with hundreds or thousands of employees.  The numbers can not be compared.  All that one can actually do is to keep practicing.

Monday, July 22, 2013

GitHub

So, I added my GitHub account to this blog.  It should be on the right in the about me section.  I didn't spend any time working on it yet, so it's just some text instead of a clickabe link.  That's fine though, at the moment my GitHub is just a few coding assignments that I've gotten from jobs I've been applying to. 

The most recent company that I applied to(well, actually they contacted me and asked me to apply) asked me if I had any products posted yet.  I really don't like that.  I mean sure, it's a bit rude for me to go around asking established places to fund my business, but I've been upfront about it. Other than actually referring to myself as a "contractor" or temporary help, there's not much more that you can do other than to state you have projects you are working on, will keep working on, and plan to create income from someday. 

I think that my GitHub is going to be similar to my employment process.  The actual topics chosen for the work are exactly what one would want.  I mean, if a beginner can't figure out how to solve the problem at all, that is going to speak volumes.  But more important than judging beginners,  I think that fairly well-known, foundation type problems will give more experienced developers a chance to open up a discussion about style.  Yeah, I solved the problem you asked for, but I took a lot of shortcuts because I don't really care.  Actually, you might not like the way that my need for excessive labeling fits in with your current employees.  Maybe, these points will give us something we can actually talk about in a follow-up interview.

Yeah, I could just start giving my code away for free.  I'm sure that's how some people are going to run a business.  Although, I know many of them are going to call themselves "hobbyists".  The first company that I worked for had some of the most strict intellectual copyright rules in the world, but they allowed any and all open source development.  So, even if that were the case, I would definitely be competing with people that do not need the money.  Even if they aren't called hobbyists, there are going to be a lot of people in that space that aren't even trying to run a legitimate business.

Sunday, July 21, 2013

JUnits and Linux

So, still the weekend.  Today is avoidance day.  My next task needs to be writing JUnits, but I do not want to do that.  Writing JUnits a while after a project has been coded really helps one to learn why people use phrases like "test driven development".  Yeah, I have to go back into the code and remember exactly what does what, where everything goes, etc.  Relearning my own work isn't the easiest task to start.  But the real problem is that I can't stop thinking, would I have done this differently if I had approached it from the beginning with the mentality that tests were going to be important?  I could reorganize my code, restructure a few things, but I probably won't.  I like the way the code functions and I've already done several rounds of refactoring.  But tests are going to be more important that I had thought.

In addition to avoiding JUnits, I'm also avoiding Linux.  I know that most developers prefer to code in Linux for whatever reasons they have, but I have decided that I'm making the switch to create a separation of my company and everything else that I do.  So what, why don't I just do it?  I think it's similar to the todo lists I mentioned in yesterday's post.  I'm actually not far enough along yet to justify having a space dedicated to just being a company.  I don't have any customers.  I don't have any marketing or advertising outlets.  I don't even have any decent office supplies.  So why am I in such a hurry to make this particular change?  Yeah, it's going to be helpful to learn the operating system.  But I guess I can't convince myself that having this separation is actually going to be helpful.  I think I'll need to re-evaluate this decision after I have my first customer.

By the way, I'm not sure if anyone's noticed, but I'm also avoiding using a spell-checker.

Saturday, July 20, 2013

weekend

Today is the weekend.  I got out and did some physical exercise today.  Painting walls and cleaning windows mostly, but it was a good change of pace to be away from the computer for a while.  Outside of my exercise schedule, I don't leave the house a lot these days.  When you work in a cubicle or do other extensive professional computer work, you tend to get accustomed to a certain type of lifestyle.  Adventures outside of your routine can be quite interesting.  All and all, it was a good time though.

My thought work is orginization.  I have a system in place.  My current system includes text files labeled with todo and a very vague system for keeping track of tasks.  It closely resembles more professional approaches like BugZilla and other enterprise solutions.  But, the system is mostly for show at the moment.  Most of the volume of work occurs with new products and features.  These are always left out of the todo system because it allows you to go more quickly in the beginning.  Well, that's the theory anyway.  Yet the way things always work out, you plan all the parts of what you're going to do before you do them, it just may not be written down on paper.  I think I do this because I hate changing my plans.  Expecially plans I've worked so hard to design.  It's like yelling at myself.

So, I'll code and code and code.  Then, I have a large amount of functionality and layouts and very little direction to where the project needs to be headed.  So, as soon as I get distracted, I have to "get back into" the project.  I think that if I just keep trying to stay organized, it will even out my productive bursts.  When I run out of ideas, or get stuck on a problem, I'll have a list of shorter tasks that I can accomplish to feel good about myself again.  Then, I'll have a list of completed tasks for patting myself on the back later.  It sounds like a good system, but I still need to stay current.

Friday, July 19, 2013

thought work

Today was a thought day.  I spent the day contemplating the direction of my company.  One of the more important ideas was the ability for me to expand in terms of employees.  If new hires can not or do not want to read my code, I am going to have a difficult time convincing people that working for me will be worth their time.  Going over the data_discussion documents (which is part of the genetics project in the science sector) was well worth my time.  For starters, it outlines what exactly my technical advantages are and how I will be able to communicate those advantages to the scientific community which will be knowledgeable in biology, physics, calculus, etc, but may not be as knowledgeable in certain aspects of computers.  This could be the most important part of that area, because if a customer does not understand why they would buy a product, they will not buy that product.

Other thoughts included my rate of development, how that effects my overall ability to maintain my organizational system and company reputation.  The rate of development is something I often forget because one usually thinks, the more accomplished the better.  I feel that sometimes if a developer is not careful, they can sacrifice the smaller details to expand functionality.  This has both advantages and disadvantages, but today I was focused specifically on how that effects my ability as one person to stay organized.  If I keep developing for the sake of writing code, I'm going to end up with a big "pile-o-code" instead of an efficient system that's going to be around for a long time.  I know that everything that I do will have to be viewed and probably worked with by another person at some point.  There are the obvious points that will get skimmed over, documentation, organizational charts, code reuse, and code readability.  But currently I'm still just one person that has to maintain all code by myself.  This means that when I switch from one part to another, I have to remember, or more often, relearn what I was doing at the time.  I also have to remember to keep all parts of my code current with the standards and techniques I'm working with at the moment.  Sometimes that's a bigger deal that other times to apply a new coding standard to old sections that may have complex dependencies or parts that were "good enough" at the time. 

Finally, I went over how my company reputation is going to be significant going forward.  This means that everything that I code is going to be a part of my company.  This won't seem like a big deal most of the time, but some people are going to think, why is a research lab wasting it's time making computer games?  Why would we fund a social app that's not going to be around for very long?  And of course, how does my smallness hinder me in my ability to move forward?

intro

I am a computer science major.  I first learned HTML in middle school and hardware freshman year of high school.  I learned Java and everything else in college.  About two years ago I decided to start my own software company.  Since then, I have been developing apps that fall under three general categories.  1. Science applications 2. Security/Enterprise applications 3. Social applications.  Each one of these categories has many different products.

1. Science applications - This category started with my senior project in college and has entries in significant directions in the field.  Products include genetic research and artificial intelligence research (and no, game ai and other forms of automation are not included in this discussion, although I also do that).  This area is going to be the most difficult for me to pursue since there are very limited customers in the field, practical applications are very expensive (labs, custom hardware, data, etc) and marketability is extremely hard to prove.

2. Security applications - This category was initially a bit of a joke, although it has become more of a center to my overall company strategy.  The idea is basically to help companies protect data through a variety of different means.  This can mean anything from actually physically guarding data with an application to simply making better products that companies will be able to trust more than their previous applications.  There are also some products that don't exactly fall under the "security" label, but under the "enterprise" label.  That simply means that the product I am making is not going to be just for one person to use, but an entire company.  The idea that products in this category aren't made for people is what this is about.

3. Social applications - This category is for applications that will be used by anyone.  The products may or may not cost money.  Ads will probably support most of the products in this category, where both other categories will require payment.  Products in this category could cost money, but at the moment that seems like it would hinder the ability to spread and gain popularity.  Social applications also includes games that are both multiplayer and single player vs. computer ai.

At the moment this is the state of my company.  The specifics are probably going to change over time, some of the security apps might become social apps, some of the social apps might become security apps, and I've even thought about a gaming category, although that seems a bit too ambitious for me.  I am not even close to the mainstream "gaming" genre, so most of what I have falls under the social aspect of the internet.  I think that as an up and coming company, it is most important to understand where I am currently standing and what that means to me going forward.  If I can barely do write a simple 2D animation engine, I don't want to think about writing a 3d engine.  The same applies to all of my other applications.  I am just starting my company and there are those out there that have been in this industry for years longer than me.

I hope that you enjoy my blog.  Look for future company updates(assuming I remember) that will re-evaluate what direction my company is going.