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.