The Zibings Starts Here

05 February, 2010

An N2 CMS

As I wrote about earlier this week, we’ll be “forced” to move our company and personal blogs off of the Blogger platform come the end of March this year.  All opinion on the matter aside, we decided this was a great opportunity to test ourselves with N2F Yverdon.

Going in line with that idea, we sat down to catalog the features we needed to replicate from Blogger and WordPress to make the CMS useful to us across multiple instances.  Here is that list:

  • Support for Windows Live Writer and other desktop publishing clients (Atom Publishing Protocol, MetaWeblogAPI, MovableType or Really Simple Discovery)
  • Multiple authors with profiles for each
  • Entry trackback links
  • Comment moderation and spam protection
  • Image upload integration with RTE
  • Pings to services like weblogs.com
  • Atom/RSS Feeds
  • Code Syntax Highlighting
  • Memcached compatibility

The list we have going is a bit longer, but mostly due to it digging down deeper with each of the above features and listing most of the common features you could expect in any useful blogging application.

You may notice that there is no mention of plug-ins.  Keep in mind that for the moment we’re building a system mostly for internal use.  N2F Yverdon is already so easily extensible we basically have a plug-in system already built.  We will be releasing the application somewhere (likely on the N2F site) under the same MS-RL license used for N2F Yverdon.  If any of you would be interested in helping us build a good plug-in system, we’re all ears.

That’s all for this announcement.  It’s looking like we’ll be putting down code as early as next week, which is good if we intend to have this ready for use by the end of March!  More updates to come as they’re available.

 

- Andy

Labels: , , , , , , ,

03 February, 2010

The End of Blogger (At Least For Me)

For the past few years, I’ve been using Blogger as the service powering my blog (and recently it was chosen to power the blog for the company).  It made things pretty easy for me, as all I needed to do was open up an FTP account to the service and let it rip.  Google had announced a while ago that they were phasing out the FTP feature for Blogger.  Since I try pretty hard to ignore Google, I missed this notice.  They were kind enough to send me a reminder email of sorts yesterday, letting me know that sometime in March this year, the FTP feature would be discontinued completely.

In some ways, this is a sad moment for me.  I have enjoyed the service, mostly because of how easy it was to use.  In other ways, this presents itself as an opportunity.  I have no intention of allowing Google to hold onto anymore of my data than they already do, so the thought of switching to a custom domain is just unacceptable.  I’m left with two choices as I see things:

  1. Install WordPress/Drupal/etc to replace Blogger
  2. Create a new CMS/Blog, because the world doesn’t already have enough of these

It’s true, the world probably doesn’t have enough.  A Bing search for ‘free Blog engine’ turns out approximately 17.5 million results, which essentially means nothing.  There are a ton of good-enough solutions out there which I could easily utilize to take care of the switch.  Unfortunately for me, I am – by default – required to be an annoying advocate for my open source framework, the N2 Framework.  We love our little framework so much, we’d rather spend time reinventing the blogging wheel and show it can be done.

So it seems that is what I’ll be doing over the next month or two.  I might be able to rope one or two of the other N2F developers into helping, but I don’t have more than a few extra hours each week that I can devote to the project.  I’ll do what I can to outline our progress here and on the N2F site.  Our goal will be to simply replicate all of the features we have available for us with the Blogger service.  I’ve got two months, here’s hoping this framework works as well as we need!

 

- Andy

Labels: , , , , , , ,

29 January, 2010

Going Back…To Old Methods

I’ve been teaching a very close friend how to program recently.  As we got close to beginning a full-fledged project (which we’ll be starting to show off sometime in February), he gave me a request.  For the most part, I’ve been showing him how to use N2F Yverdon through the lessons because of a pre-existing foundation in PHP syntax.  His request was to go back to the way I “did things before” so he could see where N2F was born.

My immediate response was a simple look of horror and sharp intake of breath.  Get rid of my beloved framework?  Go back to complete manual sanitization for data?  Use mysql_query() calls!?

After I was recovered from the shock, I realized that this is a great opportunity (or excuse) to revisit those old methods and remind myself of the very things that I hope to make unnecessary with N2F.  I agreed to the challenge, and my grin seemed to frighten my friend thoroughly.

To say it will be interesting doing this is probably an understatement, but I’ll be sure to keep you all up to date on the project’s progress.  Has anyone else done something similar?

 

- Andy

Labels: , , ,

24 January, 2010

1 Update in 1 Year, 2 Months?

As I was putting the finishing touches on the new N2F website yesterday, I happened to notice that the release date for Yverdon v0.1 was November 2nd, 2008.  That’s over 1 year and 2 months for us to release a ‘minor’ revision to the framework.  Quite frankly, I was embarrassed at first, that’s a long time for an update that doesn’t really cover a whole slew of changes.

After that initial moment however, I did stop and think about what all has gone into producing this framework.  When Matt, Chris and I originally set out to build this framework from the things we’d learned using an old framework I had built years earlier, it wasn’t something that we were able to piece together over night.  If my memory serves me (which it usually doesn’t), we spent upwards of 8 months just talking about the way the system would work and what things we wanted to accomplish.

With that in mind, I started looking back on the past year and two months that it has taken us to build v0.2.  We’ve spent a lot of time and energy testing out the different pieces of the framework, and we know we still haven’t hit everything.  After all the testing was done (or in progress), we then had to sit down and go through the process of discussing what changes needed and what we wanted to accomplish.  We actually went through this cycle 2 to 3 times before finally getting things to the point where we could release them.

All in all, it’s been a long and busy year.  We hope that the v0.2 release reflects that to those of you who end up using the system.  I promise we’ll try to keep the release of v0.3 under the 2 year mark.  ;)

 

- Andy

Labels: , , ,

06 December, 2009

Forget Me!

Now that I’ve finished rebuilding the ZibTech Consulting website, I took a bit of time to have fun with jQuery and N2F on the comments for our news entries. In doing so, I came up with an idea to solve a problem I had, as well as maybe solve a problem end-users have on the internet.

The problem I was solving was a common one; Anyone who navigates away from the news entry page (purposefully or not) would have their comment page reset to 1, even if they’d been on page 23. This seems useless and annoying, so I quickly implemented a storage method using PHP’s sessions. Though this did solve the problem, I decided I wanted a way to clear the pages I was tracked as being on if I felt like reading from the beginning again.

It was at this point I realized I could do something that users to all Zibings sites might enjoy. If you visit the site, you will see a “Forget Me!” link on the bottom of every page. The purpose of the “Forget Me!” link is to give user the ability to clear the session information stored about them on the server. This feature is going to find its way onto all Zibings Incorporated sites in the future, but not simply because we’ll have some AJAX comments hither and thither. Instead, the feature will enable end-users of our sites who haven’t signed up to opt out of things such as having their demographic information stored for their visit to the site.

When we build a site that needs a more thorough explanation on the technical specifics of the feature, I’ll take the time to spell everything out (I’d look for this on the upcoming release of ZibNet). Until then, just know that moving forward we’re going to at least commit ourselves to giving users a real option for opting out of certain things on our sites without forcing them to stop using the site. I think we could all use a little bit of that in today’s age of lost privacy, don’t you?

- Andy

Labels: , ,

28 September, 2009

Updates!

I’m feeling particularly chatty tonight, so I figured I’d give some Zibings updates to those of you who still read this blog.

The Zibings Network
We are well into the rewrite now and are hoping to be testing a new version of the site towards the end of October.  Whether or not this happens will depend a lot on me, but we’re putting as much time into the project as we can afford.  It has become a very large part of the direction we’re looking to take Zibings in general, so the lot of us are doing different things to make the re-launch smooth and worthwhile.

N2 Framework
Ah yes, the framework we love to use so much we can barely spend enough time to do updates!  In a way, we’re really happy that we’ve gotten so busy using it that we haven’t been able to finish doing the v0.2 release, but in most ways we’re just annoyed.  The release is coming still, but I’m learning that setting dates for these isn’t going to be easy while we’re the only main contributors to the code.  Even so, I keep putting some hours into it each week and will hope to release Yverdon v0.2 before the end of the year.

Super Tech Help
The forums are back, and about as active as they ever were.  No real plans have been put forth JUST yet to figure out ways to draw new traffic to the boards, but a meeting is in the works for that exact thing.  I’ll be reviving my PHP tutorial, finishing it eventually, and moving on to another tutorial which I hope won’t take me 3-4 years to complete.

 

All in all, we’re busy-busy here and loving every minute of it, as usual.  I’ll be sure to let you know when things are getting closer to completion.

 

- Andy

Labels: , , , , , , , ,

24 July, 2009

N2F Yverdon: The First Extension!

Ok, so it’s not really the first extension, but it is the first non-sponsored extension that is ‘released’ for Yverdon.  As I detail on the N2F Training blog, I was looking for a CAPTCHA solution and found this gem.  In true fanboy fashion I figured there was no better way to use this than to load it up as an extension in N2F Yverdon.  Within 10 minutes I had it working and packaged for distribution.  If you’re using Yverdon (should work with any version we have out) and need a CAPTCHA, go ahead and download the extension and unzip it to your root Yverdon directory.

 

- Andy

Labels: , , , ,

22 July, 2009

100 Posts!

After getting back from a bike ride with my dad, I noticed that I’ve made 99 posts on my blog.  As I sit here and attempt to pretend that my legs don’t exist, I thought I’d just go over a few things that are happening in my life, with Zibings, family and anything else I can think to include.

Back In The Saddle
As I just mentioned, I’ve come back after a bike ride with my father.  All told I racked up about 18.4 extremely painful miles while Dad logged around 16.4.  The reason for the difference lies with how horribly out of shape I actually appear to be on a bike.  Within the first 2 miles of the trip, Dad lost me completely.  Oh well, it’s bound to happen when you haven’t really touched a bike in 9 years.

N2F Yverdon
After my busy day today I didn’t get to do this tonight, but tomorrow I am tentatively scheduling the debut of our RC (Release Candidate) for Yverdon v0.2.  We’re getting some new people to help with testing and are hoping to be out of RC with a new site before the end of next month.  Exciting for us!

The Zibings Network
We’ve been plugging away at a few milestones on the project as well as working on adding some new team members.  We have a designer coming on board, hopefully two new developers as well as some management switches.  All in all, we’re happy with the progress and will be even happier once we start having updates to show off to the world.

 

It’s been a pretty crazy month and it seems like months more crazy are coming up soon.  Thanks to everyone who’s been reading the blog, here’s to another 100 posts!

 

- Andy

Labels: , , , , , , , ,

04 July, 2009

N2F Yverdon: v0.2 Database Testing Update

We’ve been at it for a little while now and are finally wrapping up the tests for our new database extensions.  The MySQL and MySQLi extensions have had their test sites completed and ctd1500 and I are working on finishing both the PostgreSQL and SQLite sites.

One thing that’s become clear to us is that our testing methods are relatively simple and probably will have missed some functionality as a result.  This first set of test sites will be very simple for the sake of saving time and getting us to v0.2 a little faster.  As we do more detailed work with the different database engines, we’ll work on expanding the test methods for our database extensions.

Until then, we’re just happy to be moving along with v0.2.  Last night I also began working on the new layout for the N2F site and I have to say I’m really excited.  The look and feel is much more modern and fluid, I hope that you all like it!

 

- Andy

Labels: , , , , , ,

26 June, 2009

N2F Yverdon: v0.2 Dev Released

After well over a month (heck, almost two) of internal testing, we’ve nailed down enough of the bugs that we are comfortable releasing v0.2 to the public for testing.  This is a development release and will still have bugs so should probably not be used for production development.  As always, you can find the downloads on the N2 Framework website.  Enjoy!

 

- Andy

Labels: , , , , ,

21 June, 2009

Well That’s Interesting…

For a while now, I’ve been meaning to start dabbling with regular expressions in C#.  I’ve held off though, mostly because I just haven’t had the chance to really get into anything with C# in depth on top of work and family.  At this end of this past week, Zibings finally got started on a very long-awaited project which will be done in ASP.NET, and in starting I found myself needing to port my old (almost 11 years old) email validation algorithm from C++ to C#.  I ported this to PHP years ago, and it works beautifully there, but porting it to C# offered me the ability to tweak the algorithm to work with some new tools available in .NET.

I went through, and first did an almost exact port of the script.  It worked, but I thought I should check it’s performance.  It seemed to be slow, so I tried a version of it using C#’s List datatype.  This seemed faster, but I thought I could do better.  I asked for a bit of help from some nice people on FreeNode’s ##asp.net channel (specifically Kim^J) and was given a pretty blazingly fast regular expression version.

Even so, I felt that it was odd you couldn’t create something that didn’t use a complex system like regular expressions which outperformed regular expressions, so I went back and started tweaking my List and Manual versions of the validation routine.  After a lot of work, I actually have made both into something consistently faster (on average) than a comparatively accurate compiled regular expression.  Before I go further, here’s a sampling of the rather consistent results:

Benchmarks

Also, you can view the entire source code of the .cs file here.

The three ‘algorithms’ are each enclosed in their own class.  The only difference between the List and Manual classes is that instead of using a List collection to store and search acceptable characters the Manual class simply traverses an array of the characters.  Otherwise, they should be identical in the logical patterns they use to verify that the email address and domain name are valid.

The regular expression is almost entirely based off of one readily available at this site, so if anyone out there has a pattern they know to be better/faster that should be tried I would love to hear about it, I am not a RegExpert in the least.

The above image was the result of the source code I’ve uploaded, and are derived from running three emails through a test 500 times, taking the average, and then running through again.  All told, the above test did validation of 15,000 email addresses (but of course they were the same 3 addresses).  I have run the test with a few as 5 attempts and as many as 50,000 attempts.  Regardless of the number of attempts or how many times I tell it to run the test, the order is always the same.  First and fastest is always the List version, second and mostly consistent is the Manual version and the Regex version ends up in last place by various margins.

I’ve always known it to be general knowledge that doing things by hand are faster from a computer’s perspective.  Interestingly enough though, this actually proves that at least in C#, that’s not always true.  The List approach uses a supplied method, the Contains() method, to search for the existence of a character within the List instead of looping through the entire list and bailing out when the first match is found (as the Manual approach basically does).

It should also be noted that just because the computer has an easier time handling the List/Manual methods, doesn’t mean it’s necessarily faster.  Most people are not going to be trying to validate 50,000 email addresses in a few seconds regardless of what they’re doing, so the time that I took writing this algorithm all those years ago (and today) were really wasted in a sense, as it would take a very long time to make up the time in saved milliseconds.  Regardless, I had a lot of fun working with Kim^J to look into the possibilities here.

If anyone finds anything that could help any of the algorithms become faster (and remain accurate), I’d be really excited to hear about your ideas.  Thanks again to Kim^J for the help with the regular expression version and with the test code.

 

- Andy

Labels: , , , , , , ,

18 June, 2009

N2F Yverdon: Tested On…

Just had a quick discussion in IRC and found out that we’re already tested as working on a few different environments:

- WAMP
- WIMP (IIS 5.1, 6, 7 & 7.5)
- LAMP
- MAMP

Still waiting for confirmation on Lighttpd but I don’t see why it wouldn’t work.

Not bad really, but I guess that’s more to PHP’s credit that it works so consistently over all the different environments.  Cool times, thanks for the testing guys!

 

- Andy

[Update]
Confirmation of Lighttpd has been received, thanks Anthrax.

Labels: , , ,

15 May, 2009

N2F Yverdon v0.2 Update!

In case nobody has been watching the website, we finally have started showing life again on the Yverdon v0.2 front.  The code is officially feature complete and going through some new test routines that are being built to make sure that we aren’t breaking anything major between v0.1 and v0.2.  After testing, we have some website updates to do, as well as new documentation to create, and then we’ll be ready for release.

In other news, we have begun work on an early prototype version of N2F Rupley, which will be created for use in an environment very similar to ASP.NET.  We’re excited about this, even though we feel we’re about a year away from having an alpha version to show for our work.

 

- Andy

Labels: , ,

27 February, 2009

Upcoming Zibings Activities

I’ve had a few people ask me recently what’s going on with Zibings.  The renewed interest comes at a very peculiar time, considering how much is going on behind the scenes that nobody knows about.  In order to give people a bit to go off of, I thought I’d share some things…

N2 Framework – Yverdon
Work has not stopped on Yverdon (though it’s been hindered by many other things).  At this rate, we’re hoping to have v0.2 into testing very shortly and released as soon as possible afterwards.  You can expect to see the next version sometime in March if everything stays on course from here on out.

The Zibings Network
The Zibings Network, which to most people has been dead for quite some time, is actually far from being dead.  Our initial Proof of Concept version (http://beta.zibings.net/) was a great endeavor for us as a development team, and we’re working hard to build the first legitimate version.  No specific dates in mind just yet, but we’re aiming for beginning a testing phase sometime in the next month.

Other
The reason for the delay on the previous two mentioned projects is going to be revealed within the next 3 months to early testers on ZibNet.  We’ve been putting tons of work into approaching this project in an organized manner and I know I speak for everyone at Zibings when I say that we’re excited as hell to reveal it to you.  Keep your eyes peeled here and on the main sites (www.zibings.com) as they begin to change and mature while we head towards the unveiling of our new pet project.

If you want more insight than this, you’d probably be best off joining us on IRC.  Otherwise, I’ll look forward to filling you in on more details as they come!

 

- Andy

Labels: , , ,

25 February, 2009

Some Interview Questions for Developers

While reading through links this morning I came across this blog post making fun of how managers interview developers.  Having been a part of several interviews recently and being a developer myself, I thought I’d lend a few good questions to those managers out there who are looking for some tips.

I’ve used each of the following questions in various interviews with mixed results, but each one was effective in giving me some insight into the potential developer’s tendencies and personality.

  1. Have you ever had to work on a project that has fallen behind schedule?  If so, how did you manage the pressure of catching up without sacrificing quality?
  2. Would you call yourself driven?
  3. Why did you decide to get into programming?
  4. What project were you most proud of that you’ve completed?
  5. What is your weakest area in the development process?
  6. What is your strongest are in the development process?

As usual, don’t think that I expect my questions to be the ultimate solution or anything.  These are ones I use, I’d be curious to find out what other people use for similar situations.

 

-Andy

Labels: , , ,

19 February, 2009

How To Reorganize

Anyone that knows me is aware that I’ve been sick for the past few weeks with all manner of disease and suffering.  I haven’t stopped working once, but a good indicator of how I’m feeling can be seen in the state of my office and living space.  As things stand currently, both are entering the ‘disarray’ phase of organization very clearly.

Fortunately, I am finally overcoming whatever bug(s) I’ve been enduring, and I won’t be letting things go much further down the slope towards ‘mess’.  As always, I’ll offer a disclaimer before I continue.  I am no expert, and I’m certainly not sporting a proven record of achievement in the category of self-improvement.  This is a bit of insight into a method that has worked for me before and I hope will work for me again.  Poorly-constructed legal disclaimer stated, let’s get to the meat of the conversation.

Steps To Success

  1. Get Better – This one goes without saying for me, if you are depressed or de-motivated, figure out what it is in your life that’s bothering you and take steps to resolve the issue.  For some people this involves consulting a doctor, for others just a good punch to the face.  I believe myself to be in the latter category.
  2. Clean Your Space – Another that seems pretty self-explanatory.  Call it managing your Fung Sh…well whatever it is that they term it, the point remains the same.  Mentally, people work better when they’re comfortable with the space they’re working in, and this is not just a tactic for your office.
  3. Set Organization Goals – One thing that I started doing last year was creating a schedule for myself.  I opened up Excel, laid out three different types of days for myself (Weekday, Weekend-day and Vacation-day), broke down the day into time slots, and decided what I’d like to be doing for those time slots.  This was helpful for me, and my immediate goal at that point was to follow my schedule.  Make this suit you (same as the with your workspace/livingspace), some people find it easier to have a goal such as “Clean room once a week”.
  4. Reward Yourself – When you achieve a goal, reward yourself.  I built reward periods into my schedule that allowed me to watch a movie or play a video game for an hour.  Do something that is meaningful to you and it becomes a part of your newly organized life to get that time to play.

There are plenty of tools online to help you plan and build on your successes.  One tool shown to me by a friend was something called Joe’s Goals.  I tried using it for a bit and found that my spreadsheet was more effective for me, but give it a whirl to see if it’s your kind of thing!

 

- Andy

Labels: ,

14 February, 2009

Why Not To Make an MVC Framework

As I think about what I’m hoping to convey with this post, I’d like to make two points very clear.  First, I am sick right now and very possibly am loopy beyond compare.  Why I decided to write a blog post in this condition is not a question I could ever answer.  Secondly, I have nothing against MVC beyond its status as an apparent fad in the web development industry.  It is a good design pattern that helps many people follow some great coding practices.  With that out of the way, lets get into the reason for the post.

The other day I was preparing to make a presentation on N2F to my local PHP Meetup group.  I remembered that a good many of the other members in the group were proponents of MVC, and figured that there would be no harm in creating a simple MVC extension for N2F that would show how flexible we made our framework.  Quite simply, this was the worst idea I’ve had in quite some time, but at least I got a bit of a chuckle out of the whole process.

I would never claim to be any kind of an expert on MVC.  I know the basic concepts, and attempted to build my extension based on that understanding.  The following file will give you everything I did to make N2F an MVC-ish framework.  The file mvc.ext.php is the extension which overwrites two system events to allow the change in structure.  The rest should be fairly self-explanatory, but should never be used on any kind of server…ever.  Enjoy!

 

Download N2F-MVC.rar

 

- Andy

Labels: , ,

17 November, 2008

Yverdon v0.2 - Looking Forward

For those of you who have been testing out Yverdon v0.1, I want to first say "thank you" for your time.  We've gotten some great feedback thanks to you and are doing our best to shape the system based off of your input.  We're aiming for a release early in December of v0.2, so I thought I'd give everyone a taste of the things v0.2 has in store.

Bug Fixes
Though I'm proud to say we've had a small number of bugs thus far, it would be a feat of unmatched fame if we had gotten through v0.1 without a few.  We're tackling all of the bugs we've encountered or been informed of, as well as fixing a few bad design choices with some of the core systems.  Everything will be backwards compatible with v0.1 just in case any of you have started using the framework seriously.

New Template Extension
Yverdon v0.2 will introduce improvements to the current dynamic template extension, as well as a new template extension called "static."  The static extension offers a more secure template parser for use with publicly editable templates.  We'll be sure to post a blogtorial on how to use it when the time comes.

More Database Accessibility
This release of Yverdon will expand upon our database engine selection.  We're including the old MySQL library as an option, plus one or two new engines that we'll save for release.  We also made sure to account for a bug in PHP's MySQLi library that would dump errors regardless of suppression.

New Utility Extensions
In order to show how versatile and effective the Yverdon system is, we're also piecing together some utility extensions (such as a FirePHP extension) to enable new capabilities for you, the developer.  I won't disclose a full list, but as usual we're working hard to make sure that the code is well thought out and efficient.

There will be other improvements, including additions to the web site and the introduction of a formal documentation.  I know I speak for everyone on the team when I say how excited we are to be getting close to this release.  Thanks for your patience with us as we build Yverdon into the robust framework it's bound to be and I look forward to more of your comments!

 

- Andy

Labels: , ,

02 November, 2008

N2F Yverdon v0.1 Released!

It's official!  The N2 Framework web site and the N2F Yverdon PHP framework have been released.  You can get to both of them by going to our website:

http://zibings.com/n2f/

Make sure you sign up on the forums too!

 

- Andy

Labels: , ,

01 November, 2008

The End of One Era, The Beginning of Another

Don't let the title fool you, I'm actually not about to embark on another journey down my twisted political mind.  Instead, I'd like to pay tribute to a piece of my development history that has served me dutifully over the past 4.5 years.  Most anyone who reads this blog will at least be familiar with the existence of ZSF, and some may even use it for their own purposes.  Regardless, tonight we celebrate all that it was and respectfully retire it into the software heavens.  (For anyone not following, this means that I'm not doing anymore work on ZSF, just to be clear)

Now that we have the emotional part of this out of the way, we'll get to the good news.  In lieu of the loss of ZSF, I have been working with some good friends and new colleagues to create 'ZSF Reincarnated', which we have called The N2 Framework.  The specifics of the plan for N2F are somewhat complicated, but for the moment we are working on one particular strain of the framework code named Yverdon.  Yverdon is the evolution of 4 and a half years of experience with ZSF bundled into one system.

Yverdon intends to be both simple and flexible for developers, on top of offering top performance and extremely low overhead.  The system is currently modular based, but is flexible enough to be overridden into most other popular patterns (including MVC).  Yverdon has been tested with PHP 5.2+ and should work with earlier versions of PHP 5.  Since the PHP group has been working to end it's work on PHP 4, we have opted to not make the framework PHP 4 compatible.  The system is currently being tested on both Windows and Linux environments to ensure that our code truly embraces PHP's cross-platform goodness.

Keep in mind that this is a very early release of the system.  Though we have worked hard to make the release functional, we can not guarantee that things will not change moving forward, nor can we assure you that there will not be bugs.  Our web site is in development and will provide easy ways to submit issues to the development team so that we can work them out.  We're looking forward to building a community around this framework and will rely on community feedback to shape the direction of the framework in the future, so don't be shy.

When the web site has been finished, I'll make sure to mention it at this blog.  Special thanks have to go to Chris, Matt, Patrick, Clemens and Javier for their various efforts towards this first release.  Working with each of them has been great so far and I think we're all looking forward to coaxing the true potential out of Yverdon in the months (and hopefully years) to come.

 

- Andy

Labels: , ,

26 July, 2008

ZSF Update

Last night a new update was made to ZSF. The update cleans a lot of bugs that were hanging around, and also begins working on some upgrades that will be important in the future.

enc_str()
One of the bigger changes was the introduction of a new function for creating hashed strings. The enc_str() function is documented within the code of ./conf/functions.inc.php. The previous function, encString(), will still work as expected, but is now considered to be deprecated.

ZSF_USR_LEGACY
As the PHP group stops work on PHP 4, more nad more sites written in 4 will finally be migrated to 5. Thankfully, ZSF is written to ensure as much consistency as possible during such a migration. The ZSF_USR_LEGACY setting fixes a problem that occurred when a PHP 4 ZSF was migrated to PHP 5 ZSF where the userHandler class' ability to inherit new methods was crippled due to a parameter change between the two versions. This setting is found within ./conf/config.inc.php as $system['usr_ver'].

config.inc.php and zsf.php
Another big change was the introduction of a new file, zsf.php. The contents of zsf.php are basically the same as the second half of config.inc.php, but the introduction of the file allows for configuration values only to be within config.inc.php. Along with this change, the index.php file for 'top level' directories was changed to be simpler.

Comments
Yet another big change has been the addition of standardized comments to the classes and functions within the system. This will help programs such as Zend Studio more accurately build their Intellisense library off of ZSF.

All in all, this was a huge update for ZSF. If you find bugs or have suggestions, please send them to our development list. We are holding off on the release of this until a quick site can be developed for hosting the system.

- Andy

Labels: ,

11 May, 2008

Tools For Shared Life

As most of you will know, I am currently living in an apartment with a longtime friend.  First and foremost, you should all know that it's going very well and he and I haven't had any big issues beyond how picky I am about he and his girlfriend keeping the kitchen clean.  He can't help that I'm neurotic sometimes, so I don't hold it against him in the long run.

Even so, I have been in living situations before where it would have been nice to be able to keep track of things like rent payments, grocery receipts and utility payments.  Those memories, and my newfound desire to get back into desktop application programming, have led me to decide I am going to create a set of tools that will help in keeping track of the aforementioned.  I have no specific roadmap or set of features that I've decided on, so suggestions would be welcomed.

As I get around to finishing the applications, I will release them here via my blog so that all may benefit from their existence.  I'm looking forward to working on these, I just hope that someone else can find them useful.

 

Andy

Labels: ,

26 January, 2008

More ZibNet Updates Coming!

We're quickly approaching our goal for initial release of ZibNet.  We'll be cutting it close depending on a few things and are intending on taking another week or two in order to do some solid security enhancements and testing...  But!  That does mean one good thing for all you beta testers.  We're going to be throwing out a few new features over the course of the next week and will be ready for major testing.  There are three big features slated to come out this week that are all comfortably on schedule.  Also, we'll be seeing our new design come out in short order as well.

Hope you all are looking forward to this as much as I am!

 

- Andy

Labels: , , ,

15 November, 2007

Thanksgiving Week

I'll be spending the next week up with my family in New England.  As a result, most of the rest of the team will be taking off for the next week as well (I guess this just goes to show how much of a slave driver I really am).  We'll resume the following week and have a good solid stream of updates coming through from that point on.  Till then, Happy Thanksgiving!

 

- Andy

Labels: , ,

08 October, 2007

What A Week...End...

So what started as a small idea for a side project between z|Casey and myself has turned into one heck of a plethora of changes.  I'll go straight into the breakdown.

The Zibings Network
This was meant to be the side project.  We were going to create a new site for the Zibings Network, one that allowed us to provide a good centralized location for registering with the network, logging into the network as well as getting general information about the network.

What happened instead, was the birth of a whole slew of upgrades to the network infrastructure.  While doing the upgrades (which include things such as friends lists and private messaging), I was faced with the necessity of having to change the way ZSF worked.  And that is why, the second part of this is...

The Zibings Site Framework
Yep!  And as with the ZibNet updates, this one started out small as well.  I just needed to add one capability to one section of the framework.  In adding that functionality though, I realized that just throwing the feature in its place wouldn't do much good in the end to help the framework grow.

After a few hours, I'd completely rewritten the framework, and we now have a few bug fixes thrown in as well as a new event system (that was the feature I needed).

 

Either way, its been a lot of programming, and this forces us to do some major updates to ZTC soon as well, so keep an eye out for that.  We're flying around like little bees as usual, this time just a few more fun things are on the way for you the user.

 

- Andy

Labels: , , , , , ,

21 August, 2007

Quite A Few Updates

Alright, so its been -quite- a long time since we've last spoken.  I won't apologize for it as the reason I've been so flaky with this blog is due to my excessive amounts of work towards adding features for little old you.

ZibTech Computers
A ton of work has gone into the ZTC web site, there's more details on that if you go to my news post.  What it comes down to, is that we've finally finished the inventory system and its in testing phases.  Once it leaves that, we'll be putting together things like our product listing and configuration.  Very exciting stuff!

Zibings Network
The Zibings Network updates really come in the form of two things.  First and foremost, we've sorted out a ton of bugs in the connection code and are now testing it on the ZTC site.  So far, its been running almost flawlessly, so we're happy.  Secondly, we've begun recoding ZibNetBot, which you all know and love.  He'll be redone in PHP and run as a Windows Service on our dedicated server, and from what we've done so far I can honestly say I'm looking forward to getting it done and seeing him in action.

Zibings Technologies
With the addition of someone to the Zibings Incorporated team, some new life has been breathed into Zibings Technologies, or as it was once named...Zibings.com Web Services.  I won't go into too much detail, as that would be giving away juicy secrets, but I will say that we're working on something useful for ourselves and for the company.  All of it is aimed at bringing something to life that should've been alive for years.

Epoch Gaming
Ahh, Epoch Gaming, my favorite little thing to forget about, how I do love thee!  For once, Epoch has taken a large step forward on a few fronts.  The web site has been resurrected and is being tweaked to work with the current version of ZSF.  Also, we're preparing to plug in the ZibNet connection code so that it works properly with the network.  Add onto that the fact that we've begun having development meetings for Forgotten War...for once I can gladly say that we haven't forgotten about good old Epoch.

Zibings Incorporated
We've recently added a new Director of Marketing.  Though his name is also Andrew, it is not the same person as me, which means the world to me.  He's already proving to be a very effective and motivated addition, so I think I speak for everyone when I say that his joining us is a welcome event.

 

That's about it for now.  I'm still out campaigning of sorts for Ron Paul, but its been hard to get much done with all the work being done on Zibings.  I'll make another entry when I can, and maybe someday I'll be caught up enough that I can fulfill my dream of blogging on a daily basis.  Until then...take it easy!

 

Andy

Labels: , , , , , , ,

01 July, 2007

Return Of An Old Friend

Well not really, but when you have as little of a life as I do, it certainly feels like something so intangible as an IRC bot is an old friend.

After a long and painful absence, I've finally taken a few hours and patched together our friend ZibNetBot so that he can come keep track of how chatty we are.  I'll soon be adding an MSN search option, WhatPulse stat viewer, trivia game and quote database to him, but I can only do so much in one night.  Stop on by and give him a scratch behind the ears, he does so love that...

 

Andy

Labels: ,

29 June, 2007

Into The Future

For those few of you who've been watching my blog, you'll no doubt have noticed a recent lack in posting.  I haven't disappeared or given up on my blog, quite to the contrary in fact.  I'm considering moving away from blogger in the near future, but for now I'll just be moving the blog to being a part of a greater site for myself.

The site will serve to outline a few of my personal interests as well as be a bit of a portfolio for myself and some of my friends.  I'll still have a blog, and for the time being at least it'll still be based with Blogger, but the eventual idea would be to move over to a new system based on my Zibings Network.  It'll be quite an undertaking, but therefore fun for me and hopefully fun for you.  I'll keep you updated when I start making progress with it!

- Andy

PS - For those of you waiting for my post about my vacation, I'll be waiting a bit longer to do it.  I want to see if I can shoot off an quick version of a new site with it in it as opposed to just making some kind of strange blog post with pictures riddled throughout it.  If it will take too long, I'll just post them on here, no worries!

PSS - I also intend on revisiting my PHP tutorial on STH soon, but have to finish a few other projects within the company before that's really possible.

Labels: , ,

14 May, 2007

ZSF Standardization

The Zibings Development Team has been working pretty hard on the ZibTech sites recently, which all use the Zibings Site Framework (v1.3.3). Through their work, I've been told that there is a pretty serious need for some standardization for the way we work with the ZSF system. It was something on our agenda for ZSF 2, but there's no time like the present to start shoring up holes in our process I always say!

The following blog post will be a bit involved and requires you to have a good working knowledge of the ZSF system, but for those who do it should be a good help for defining the best methods of using each part of the system. Off we go..

Definitions
ZSF - Zibings Site Framework
TPL - Template
User Space - Code done inside of the usr.cnf files
Page Space - Code done elsewhere, but not inside the TPLs
TPL Space - Code done inside the TPLs

User Space
The User Space (or usr.cnf files) is where your backend work should be done. As much database work as possible should be handled through function/method calls created inside this area of the code. This helps centralize where you have to go should you be having database problems of any kind. Should there be anything you want to be available to the entire of the system, this is also where it should be done.

Because of the way that ZSF is constructed, the User Space code is called up pretty quickly upon system initialization. The system will call every single usr.cnf file in the current scope, regardless of which module is actually being loaded.

Current Scope is defined by which section of ZSF 1 your user is currently viewing. There are two possible scopes, the first being global when anyone views the main index.php and modules through it. The second scope is admin scope, obviously when a priviledged user views the system modules through admin/index.php. Global scope will only pull all top-level usr.cnf files into the system at initialization, whereas the admin scope will load all top-level usr.cnf files as well as all admin-level usr.cnf files. This is an important thing to note as it can cause problems in your admin scope if you use redundant code in your admin-level and top-level usr.cnf files.

The best way to view the User Space is to pretend that it is where you create an API for the rest of your spaces. Try keeping as true to that as possible and you will get the most (and best) use of the User Space as ZSF can offer in its current state (v1.3.3 at time of writing).

Page Space
The Page Space is easily described as the rest of the code excepting our TPL files. In order to use the system effectively however, there are certain things that you should ensure do not find their way into your Page Space.

The Page Space is meant to be used as the intermediary between our User Space 'API' and the TPL files. Page Space should control which TPL files are being used/displayed, and provide them with information to help in their displaying of information. As I mentioned above, the User Space should take care of the majority of all database calls, if not all database calls. This makes it so that the Page Space does nothing but use the functions/methods offered by the User Space to do things such as validate user input and send that input to the database.

Even so, because the Page Space has to control the templates, often times the Page Space will end up much more expansive and confusing than the User Space. It is good (and suggested) that you seperate different page controls into different files which branch off from the modules' main index.php file. For example, lets pretend we have 3 pages to a module: Home, Page1 and Page2. The following would be a generally accepted file structure for the module directory:

myModule
myModule/index.php
myModule/inc/page1.inc.php
myModule/inc/page2.inc.php

All of the data handling for the 'Home' page is done inside of the index.php file. If the index.php file finds that it is dealing with either Page1 or Page2, it calls the appropriate .inc.php file and exits so that the .inc.php file can do everything for itself in regards to that specific page.

Remember that the Page Space, unlike the User Space, is only available when that particular module is being called, so if you need something to be available globally, it must go into the User Space, not the Page Space.

TPL Space
The final section, the TPL Space, is meant to be only for displaying data provided by the Page Space. Though the TPL system is really just a fancy way of doing PHP inside of a somewhat scope-limited file, the effect is just as good as any high-end high-overhead system out there, such as Smarty. The difference between our TPL Engine and that of Smarty's, is that ours requires us to use a bit of due diligence to ensure that the TPL Engine is used properly.

Your template should never have any kind of functionality thrown into it beyond a rare instance of seperating pages off of a variable-based token. The best thing to ask yourself when coding a TPL file is: "Does this really need to be done in order for my information to be displayed?" If you ask this question and are honest with yourself, you will end up with TPL files with little more than variable access and an occassional conditional loop inside of them. That is the desired makeup of the TPL Space, nothing but the work we do in order to display the data provided by the other two spaces.

Review
Let's go over this in review, just quickly.

The User Space is meant for globally accessed code API's which do things such as data validation and database interaction.

The Page Space is meant for module-specific code and is the bridge between the User Space and the TPL Space. This space provides all information from the User Space to the TPL Space so that it can be used there.

The TPL Space is meant to simply display the data provided from the Page Space (and ultimately the User Space). There should be very little code in this space.



I hope that this has helped someone out there. Any questions, as usual, can be commented here or over at STH, I troll both places on a regular basis.

- Andy

Labels:

11 April, 2007

ZSF v1.3.3 Released

I've spent a bit of time with my beloved ZSF (Zibings Site Framework) tonight and released v1.3.3 of it 'to the masses'. You can check out the post on Super Tech Help for details on how to download it and some basic information on what ZSF is. I'll probably make a post at some point to go over what my goals are with the project, its pretty close to my heart. Here's a brief changelog for those interested:

  • Imported entire tree into Subversion repository for versioned development

  • Secured source.php for Windows machines (haven't tested on a *nix machine yet, will do for 1.4)

  • Removed database 'script stoppers' so that script runs even if it can't connect to db

  • Removed database error echo()'s so that error messages are all pretty in default template

  • Modified and tested tpl_addVar() functions, tested OK but not sure if bug is fixed completely

  • Changed config file to have proper default TPL_DIR (D:\webRoot\zibings\public_html\siteSys)

  • Cleaned up a few files so they don't have blank tabs everywhere

  • Modified database classes to work independantly of each other (new resource link on connect)

  • Removed .tpl.cac files from cached directory (not necessary in repository)

  • Removed install.sql file (outdated)



- Andy

Labels: ,

09 April, 2007

Time Apart

Its a scary title, but in reality is something that isn't even remotely scary. In recent months I've been constantly trying to find ways to help myself 'stay fresh' on my various programming projects. One of my biggest downfalls has always been overzealousness, meaning of course that when starting a project I put so much time and effort into it that I just can't bear working on it after a while and I fall behind schedule after dashing ahead.

I've slowly been developing a method of working on projects by taking advantage of the realization that when I don't allow myself to concentrate too much on a single project through the use of other smaller projects, I rarely burn out on any of the projects and have a much better chance at staying on schedule (and sometimes even beating my schedule). I've begun to call this the 'Time Apart' method, as you can guess from the title.

Each day I seem to find new ways to take this method a bit further. I've started using a time tracker on my computer to track how much time I'm spending on each of my projects. This in conjunction with Base Camp (which my good friend Cassie introduced me to) are helping me keep my project-schedule a little bit more organized. It works for me, and who knows it might even work for you. ;)

- Andy

Labels: ,

07 April, 2007

Hiccup!

Its been far too long since my last update, but we've just been -that- busy with everything at Zibings Incorporated! I've been flying around updating things with the release of our first beta for the Zibings Network, not to mention the server work we've been doing.

Server Migration
That of course calls into question the server migration that never happened. We ended up waiting for far too long to get the server from the new provider, so we cut our losses and put the money into upgrading our current server. As a result there wasn't any downtime, though we are planning on adding another server again in the near future, I'll of course keep you posted.

ZTC Site Beta
Then there was ZTC, which has been another source of my busy-ness as of late. The inventory system is going much faster than I thought it would and will be into the testing phase soon with staff members. After we work out some kinks, we'll be piecing together some of the configurators using the 'live' inventory, so we'll need you all to go build fake computers using the site. Again I'll keep you posted when there's more information regarding the site.

Zibings.com
Along with the release of the first beta for ZibNet, we are trying to fly through and do minor skin and security updates on all of our sites. The first one in line for this was www.zibings.com and it is well into its makeover, hoping to be finished with it completely before the new week begins on Monday.

Zibings Network
As I said earlier, we're all buzzing about our 'Beta 1' release of the Zibings Network. What is the Zibings Network? The basic idea is to create a network of services/sites that will work together with unified logins and profiles so that you can organize yourself, collaborate with others, socialize, etc without having to keep track of 30 different websites and their respective logins. We're excited about it obviously, and we already have both ZTC and Epoch working off of the unified login system. We're working on creating a few more ways to integrate with the system so that we can continue adding new sites without needing months of modification/development, but its a work in progress (and is a beta after all).

ZibNet IRC
I felt this update deserved its own section, though it really belongs underneath the above 'Zibings Network' section since that's what it is part of. We have put the finishing touches on our IRC network for now, and you are invited to come join, bring your friends and chat to your heart's content. The easiest way of connecting is to use our IRC Connection Form and join up using the web-applet. However, should you be one of those IRC experts, you can connect using your favorite client to:

Normal: irc.zibings.net:6667
SSL Enabled: irc.zibings.net:+6670

Epoch Gaming
Haven't gotten to do an update on this bugger for a while, but we are happy to announce the return of Chris Butcher to the development team for Epoch Gaming. He will be in charge of system development for the site. Chris is very dedicated to the completion and ultimate success of Epoch, so I'm very excited to see his contributions.

That's all I have for now, I had thought of another post I'd wanted to put up a while ago and just haven't had time to type up, so maybe tomorrow I'll throw that up. Thanks for reading!

- Andy

Labels: , , , ,

19 March, 2007

Code Formatting

A recent discussion with a friend broached the subject of code formatting. This is one of those subjects where I truly believe no happy medium will ever be met between major parties. Some people like certain methods, and others just like the opposite. That's how its been for ages, merely a matter for personal preference and pointless debate. This point in no way intends to change that, but if you come off thinking my chosen formatting method is the way to go, I'm glad I could help you.

Before we get into this, let me make a statement about my personal views on the importance of formatting your code. When I teach people to code, I do what I can to stress over and over again that you must format your code. If you take the mere seconds of extra time it takes to ensure that your code is consistently tabbed, spaced, etc, those who might read your code in the future will forever love you.

Formatting A-La Andy
I will be outlining my formatting for PHP, the all-popular and fluffy web scripting language. The majority of the principles I use for my PHP code carry over to the other languages I use with little to no modification. If you have any questions, of course feel free to let me know.

The first big thing with my formatting style, is to use tabs. Use tabs, not tabs as spaces, and ensure that your tabs are 5 characters (spaces) in size.

Next you'll want to be sure that you always leave an empty line between your lines and the code that goes between them. Also, always begin your first level of code (where a level is defined as the top level of 'nested' code in your file) at a one tab indent:



With comments, I try to use only two different types in PHP, but will sometimes feel a little frisky and change it up slightly. For large comment blocks that are used as descriptions or copyright notices, etc, I use the C style comments /* */, and for single line comments I use the // style comments. I rarely use the # style comments because really they're just another way of doing the // comments, and who needs redundancy!



Another big part of my formatting style is grouping. I like to do my best to group code, meaning that if I'm setting some variables up that are related, I'll put them on lines directly after each other, but as soon as I am doing something different, I will add an empty line between the two parts so there is a clear definition of the workflow 'group'.

When dealing with parenthesis "( )", I space them out only in a few instances, mostly when several can be inside of others (most logical statements, such as if() and while()) or when it is a function declaration. Everywhere else (with very few exceptions), I squash the parenthesis against the characters they are enclosing, as well as the characters they originate from. The next example covers most of what I've just said...



You'll also notice, when making nested code, I use one tab per nest. Since I start out with all of my code 1 tab indented already, that means the first nest of code will be indented 2 tabs, the second 3 tabs...so on and so forth. Also, with logical operators I use brackets on the following line at the same indentation as the logical statement resides on, I think it makes matching up the brackets with their logical statement a lot easier.

Finally, I can't stress this enough...but you should NOT leave anything on empty lines. If there is a blank line, let it be blank instead of filled with tabs. It takes about 2 keystrokes to hit ctrl+home and then backspace, its not too much to ask when you're trying to be neat with your code.

Those are the basics of my methods, and I don't expect anyone (except those that are coding on my projects) to follow them. As stated earlier, if they help you, awesome and glad I could be of assistance. If they don't help you, sorry to have wasted your time. :p

- Andy

Labels:

17 March, 2007

To Become A Programmer

Every now and then someone asks me to teach them how to program. I'm happy to oblige most times, but many times I'll find the person getting frustrated a ways into the lessons for various reasons. One point that I probably don't make often enough (in the hopes of not discouraging people from trying to learn to program) is that there is a difference in becoming a programmer, and becoming a good programmer.

What's the difference you ask? Simply put, the difference between a programmer and a good programmer, is a state of mind. Some people consider me a good programmer, mostly from what I can tell due to the fact that I have a good working knowledge of quite a few programming languages. Though this is flattering, and I have worked hard to earn that knowledge, those people often overlook the more important reasons I strive towards which would make me a truly good programmer. Knowledge is only half of the battle with programming, the rest of the battle is using your intuition and logical thought processes to apply that knowledge.

Saying someone is a good programmer because they have the knowledge, is like saying a person is a good driver because they attend driver's education in school and got a good grade. For those of you blessed enough to not have had to deal with driver's education, it doesn't take much to do well in the class. You read a bit in some books provided by the state, you take some visual, audio, and written tests, and then you pass. I know that almost every driver around me that was born in the commonwealth of Pennsylvania has taken driver's education, and I also know that about 8 out of 10 of them are some of the worst drivers I've ever had the misfortune of being near while in my car.

I can teach you the knowledge for programming, but if you aren't able to think like a programmer, you won't be a good programmer, just as you more than likely would be a horrible driver if the only experience you ever got was a driver's education class. It takes time and energy to master the art, just as with driving. Buckle in and dedicate yourself to the task, you can be sure you have a good chance of becoming a great programmer.

Oh, and for those of you wondering, I consider myself to be going through about the 40th installment of the programming equivalent of driver's education, so I'll keep at it with you. ;)

- Andy

Labels:

14 March, 2007

ZSF v2.0

For a while now we've been running things off of the 1.x tree of the Zibings Site Framework. The 1.x tree has been good to ZSF as well, bringing with it a name change, a huge increase in stability, and of course the complete set of intended features that I set out to put in place from the start.

Now that we've reached that milestone, its time to start making the system a bit more professional. Sparked on by Chris Butcher, I've started laying out some plans for ZSF v2.0, and I'm asking for comments and suggestions from pretty much anyone and everyone I can think of. I want to improve a lot of the current features, streamline and optimize them, as well as add a lot of new features that can be turned on and off depending on your system's PHP configuration.

It should prove to be a challenging and fun project. I'm keeping track of everything over on the Super Tech Help forums so that they get a bit more reasons for traffic, you can check out the v2.0 planning thread by clicking here. Let me know if you've got any ideas!

- Andy

Labels: