DragonU DB Component

July 19th, 2009

The concept is fairly simple and helps me develop the component a great deal quicker than originally planned. I had originally planned to have a master DB object that handled all of the major features through a fluent interface. The point now, is that I want to do that, yes, but I want to simplify the code even more.

The problem before was that the scope was too great for me to develop and because it was massive, I had problem testing and seeing where the end was. I have difficulty programming like that. The way I like to problem is by building something that I can understand in my head. If I can’t understand how it all works, then I become depressed, because it is a great deal harder to see where you are out, if where you are going is off in the distance and over the horizon.

The solution now is to create the DB component in smaller chunks. In this way, I can improve the chucks over time and add new features by adding new chucks. There will of course, be problems with this solution, in that it will require refactoring in the future that may break backwards compatibility. I think of course, that to do so, will mean to increment the version. So everyone that uses version 1.x.x will always have compatibility with those versions. When new features are added, nothing will be removed that will break older versions.

Well, right now, version 1 hasn’t been released, so I feel as if I can do whatever I want. Just that I hope to get version 1 out the door sometime in a month or two, but most likely it will probably be sometime early next year.

DragonU DB Connection

The DB Connection object will have several parts and may rely on a config later on. The point is that when the config is added, it won’t require any work to be done to this object it will just rest on top of the DB components, so instead of building the DB connection objects manually as you will have to do when it is finished, you will have a configuration file that you can create the connections and manage them through that.

The purpose of this object is to store the PDO or PDO wrapper for MySQLi and MySQL extensions. The PDO Wrapper object will be developed later, however, the point is to allow PDO, since the API is standard and allows for many DBMS access through it. The PDO wrapper object will be an extra “feature” to allow for other extensions to work with the DB functionality.

After the PDO object or PDO wrapper Object is stored and connected, it will store that connection for the reminder of execution. So you can only have one connection per DB Connection object. If you need more than you need to create multiple DB Connection objects. However, the main library code will only use one DB Connection object for processing.

The code for this will be extremely simple. The connection can be created by either passing a PDO or PDO Wrapper object (it has its own method), passing a DSN string which will be used to create either a PDO (if the extension exists for the DB type) or PDO Wrapper object, or Resource or DB object for the ones that are supported. When the DB connection has been completed, the only other process is to pass the PDO object to the code base that will use it.

DragonU DB Connection Cluster

This works like the DragonU DB Connection object, but instead of passing the PDO object, it will instead pass itself which will in turn iterate certain calls to all DB connections. It will cycle through SELECT queries for each DB connection object in a dumb load balancing fashion.

The purpose of this container feature, is to use multiple connections for selecting and to keep all of the connections synced by passing queries to each of the connections. It makes more sense to use the DBMS cluster feature for most DBMS, but for some reason the feature in MySQL just plain sucks. Until they get it fixed, it will make a bit more sense to use this sort of emulation for the clustering, unless you have a lot of DB servers.

I could probably extend the feature set in the future, but I don’t want to get too far into what the DBMS does better. It is just a simple solution to what some DBMS makes more difficult and asinine than it needs to be. This is all it should be.

DragonU DB Main Component

This is the object that will manage take the DB Connection or DB Connection Cluster object and what other developers will work off of. It will be more of a factory than do any work and will be set up to allow for fluent interface usage. By keeping the main class stupid, it should be simple to add new features to it by what amounts to just “opening the door” to the feature.

DragonU DB Scheme Component

I’m still not exactly sure how I’m going to implement this. I think the simplest way is to create a loader which handles the inclusion of the scheme and passes the functionality, however, I’m thinking of another way to do it. Perhaps the simplest way, is to have the CRUD scheme to where it builds based on the SQL for the DBMS and methods. There can also be an abstract class which handles the non-SQL specific code and the Scheme will just need to implement the code to handle the create, retrieve, update, and delete methods. The problem with this, is that it will require modification whenever new methods are added and not all DBMS has the same SQL.

I believe, that by assigning Schemes to CRUD, BREAD, etc that it will simplify the DB SQL for majority of people and work on all of the DBMS that there is a Scheme class. The developers who want to take advantage of the specific SQL features of the DBMS will still be able to use the Scheme component to allow for that as well.

The point is to focus on the API for developers to use and not on the Database specifics. That should be up to the developer of the library to design and setup for the user of said library. So be a bit more clear, the user of the API should never interact with this layer at all and only the layer either directly above the DB or however many layers separates the user of the library from the DB.

Another key feature will be the way to extend the Scheme dynamically. The point of this is to keep from creating a new class to add functionality, but add functionality through external callable that will be managed externally through a plugin specific to the Scheme functionality.

DragonU DB CRUD Component

The most basics of DB access is the CRUD pattern. I’m going to include it for the simple purpose of easing the usage of the DB component. If the developer wants to develop their code using CRUD, then this will allow them to do so. I’m most interested in seeing how many developers use what pattern. The problem of which is that I’d need to have many people actually use the DB component to get statistics.

The CRUD component will include more than just create(), retrieve(), update(), and delete(). The experiment is to see how people use the fluent interface, so there will be extra methods.

  • The table() method to specify which table to use.
  • A where() method to chain the where for updating and deletion.
  • A select() method for chaining or selecting what to retrieve.
  • A limit() method to limit retrieval, updating, and deleting.

There will be other methods, which the scheme class will have to support, but shouldn’t extend to the full SQL language. The bits that are needed are to restrict what is retrieved, what is deleted, and what is updated. Extending it further than that is a waste of time to develop for CRUD.

DragonU DB BREAD Component

BREAD is works exactly like CRUD, except you have different and more methods to work off of. The methods are browse(), retrieve(), edit(), add(), and delete(). There difference from CRUD is that the retrieve is both for one or many, whereas the browse() in BREAD is for many and the retrieve in BREAD is for one and only one. The BREAD edit() works exactly like update() in CRUD. The BREAD add() works exactly like create() in CRUD. The delete() methods are the same for both CRUD and BREAD.

The advantage of BREAD over CRUD is in the retrieval. I suppose is arguable whether two methods is better than one. It will be up to the developer to decide whether to use CRUD or BREAD. As it is mainly up to their preference for either one.

Other Patterns

Other patterns will be added as well over time. That is the nice part of the component. I’m not really tied into implementing it in one way or refactoring to allow for more patterns to be added. It is just faster to focus on a few things to get the initial functionality working and usable in projects, instead of having to wait until the majority of it is finished before using the library.

Other Functionality

The functionality covered in this post is just a small part of what most DB component packages offer, so yes, as the DragonU library is developed, more features will be added. It is just better to work off a base that allows it to be done easily and doesn’t require that it all be done at the same time.

Possibly Related Posts:


Ripping CodeIgniter a New One, Part 2

July 10th, 2009

In part one of the series, I wrote about the advantages of CodeIgniter. I will say that there are quite a few. It is a matter of perspective and I don’t want to do CodeIgniter a disservice by not mentioning a few of them. Perhaps you have more and can comment on that post.

What I want to write about now is rebuttals to several messages mentioned on the CodeIgniter site. It is mean to do so, because I get upset when people point out my idiocy on this blog and elsewhere when I wrote something I think is witty. It is humiliating to find otherwise, but I hope they grow a little from the criticism (or probably die a little inside like I do). Addendum: It was mentioned that many of the arguments are “straw men” and thus weaker than I had originally planned. I resolved to edit and clarify certain positions.

Ripping “Who is CodeIgniter for?” Section

I’ll tell you who CodeIgniter is for. CodeIgniter is for those who want to get shit done and don’t care if the framework they are using is shit. Doesn’t mean the end product is going to be shit, you can avoid the more shitty parts of CodeIgniter (which I’ll get into in Part 3). Just means that if your product doesn’t require more advanced features required for open source or professional web application development, then CodeIgniter is for you. Just don’t expect to create WordPress, unless you plan on reimplementing some of the more worthless parts of CodeIgniter.

I forgot to mention that the other parts in the list, I have no problem with. CodeIgniter does have a relatively small footprint. It doesn’t require a lot of configurations, which is nice because it helps to not have to jump through hoops to get started.

  1. “You need exceptional performance.”

    CodeIgniter mentions that it asks for a framework with better performance, I will mention Yii Framework. You could make CodeIgniter faster by requiring the files you need manually. Dynamically loading files does not improve performance. I take issue with the state based on the fact that Yii Framework is faster based on it not dynamically loading every file it needs in the framework.

    While it is true that CodeIgniter is faster than the other frameworks it competes with, it is not faster than Yii. Still there are ways to get around performance bottlenecks in any framework. Dynamically loading files negates the advantages of opcode caching like APC, XCache, etc and you can download Yii Framework library that doesn’t use the dynamic loader. (It is unfortunate that the benchmark I link to pretty much fudges the results by offsetting the real world performance and thus, most be taken carefully.)

    CodeIgniter probably gets away with reducing overhead through its architecture which violates much of what well written code should be. It is an advantage for performance, but you lose maintainability and extensibility. I think this has been my argument against CodeIgniter, is that it sacrifices, so much for simplicity and perhaps performance if it was planned from the beginning to use anti-patterns in its development.

    I could also list many instances where the code is unoptimized for the feature set and could be written to preform better. However, it would be better serve to either submit a patch for those parts or just write my own and learn from those (potential) bottlenecks. I will give it that having less methods and classes is probably giving it a boost over those who use smaller methods and more classes. The speed benefits are minimal and the disadvantages with less extensibility and poor maintainability with larger methods and less classes far outweigh the small performance benefit.

  2. “You need broad compatibility with standard hosting accounts that run a variety of PHP versions and configurations.”

    This should be rewritten as, “You need a framework that works on PHP4.” True, I still don’t put much respect on frameworks and code bases that maintain backwards compatibility with past dead PHP versions. However, there is something to be said with staying the course and making those developers and customers happy that are still on those versions. It is most likely a very good advantage to those who haven’t upgraded their servers or are on servers that haven’t, won’t, or can’t upgrade to PHP5.

    The company probably stands behind this statement based on the software they maintain and build. Therefore, while I did put less emphasis on the company and their goal to reach as many potential customers as possible. I might very well be wrong, because they’d be in a better position to ensure that the library runs on more configurations than some of the other open source frameworks who either didn’t realize it doesn’t work or don’t really care about that configuration.

    Still, I look at Zend Framework, Yii Framework, and don’t see many configurations that those do not run on. Of course, not everyone is running on a dedicated server with full control over what they have and even those who are have to weight the advantages over changing their server and configurations for a mere framework. Still, code wise, I’m not seeing many configurations that other frameworks won’t run on. Props on the PHP4 support, although, it is holding the framework back in terms of what they can do.

    I will mention that the statistics for PHP4 and PHP5 had it about even October of last year (2008) and almost a year later, the adoption of PHP5 should have grown considerably. The emphasis on PHP4 has yet to die, but well, if your customers or users ask for it, it is probably a good choice to use an existing framework instead of rolling out your own to support PHP4.

  3. “You want a framework that does not require you to adhere to restrictive coding rules.”

    I would rather CodeIgniter adhere to strict coding rules like coding standards as to not have to worry about spaces vs tabs, which it uses both. The statement doesn’t make any sense to me as “rules” can be anything. Restrictive coding rules is not defined. What exactly does it mean? Which framework requires that you adhere to strict coding rules when using the framework or class library? This should be a given. A framework should allow me the option to code how I want within the domain of the framework without restricting my design and coding. Any framework that does, probably isn’t going to be used except by the developer that wrote it.

    As an addendum, the only frameworks I’ve worked with have been Zend Framework and CodeIgniter, and I’ve only looked at the code bases of the others. I think it is reasonable to restrict controllers for various reasons, as well as models. Every framework is going to have restrictions on directory structure, some more asinine than others. CodeIgniter is definitely one of the less asinine with restrictions on directory structure.

  4. “You are not interested in large-scale monolithic libraries like PEAR.”

    I’m not sure how PEAR has anything to do with a framework. As well as to the statement that PEAR is large-scale and monolithic, that really depends on which library you are using. Some have more features than others and therefore are large-scale and monolithic to fulfill whatever problem the developer had to solve.

    PEAR is a repository of class libraries. You can use it or not, or use some classes or others. Some classes do have dependencies which require downloading. The advantage is that PEAR class libraries are usually system wide, meaning you only need to have it once. You do have to set the include path for this to happen and as well, if you have many web applications on your server using CodeIgniter, it is completely possible to include it in the PHP include path as well.

  5. “You do not want to be forced to learn a templating language…”

    The frameworks and class libraries I’ve looked at and worked with do not require learning a templating language, nor do they even include one. Templating languages are a dime a dozen and including, separately, into your project is something that can be done external of the framework.

    As an addendum, I have finally discovered MVC frameworks that do include templating engines. However, it is fortunate that they will never be used outside of the original developers.

  6. “You eschew complexity, favoring simple solutions.”

    Yes, if your solution requires simple for the duration of the project, then CodeIgniter is great for your project. I’ll get into the design flaws of CodeIgniter later. Different projects have different needs and complexity. Some solutions aren’t going to need hooks, theming, etc and are just the model, views, controllers, and some helpers and, or libraries. Others that do, are going to find complexity over what other frameworks do. So I mean, the bootstrapping, models, views, database active record, and controllers are simple enough.

    The problem is that, you are going to miss out and it seems the developers are geared toward simple in some parts, like the Controller, Model, and Views, but retarded in other less frequently used parts. The hook system is a joke, as well as other architecture mishaps. The hook and plugin system are far from simple in any practical terms. Why should I have to jump through hoops when it is done far better in other systems?

  7. “You need clear, thorough documentation.”

    If you want to know how well documentation can be, then you need to look at the Zend Framework with both the tutorials that covers almost everything you’ll ever want to use the components for. Also it includes a class reference for all the rest of the missing bits not in the user manual. This happens from the strict coding standards which states that all components require inline documentation and DocBook XML describing how to use the component. Most of the professional, group frameworks and class libraries will have well written detailed documentation, both tutorial and class reference.

    I will say that some is enough. That said, if you can provide the foundation for people to improve upon (and hopefully contribute back) and get started, then the developers should be able to run with it. The hardest part is knowing where to start and once that is realized it is simple enough to figure out the rest.

Source: CodeIgniter User Guide Start Page.

It is of course partially marketing, because you won’t find many frameworks worth using that don’t have these to some degree. I will also say that I have no problem with the other items in the page. CodeIgniter does in fact live up to those statements.

Edit: There isn’t going to be a third part. It was going to go into the architecture flaws, but meh, my fire for dissing CodeIgniter has died. Perhaps I’ll go back to it after I write my own and show how it should be done (or if the case might be, how it shouldn’t be done). I will contend that implementing anti-patterns in a project is a tragedy that should not be. To do so is to burden the maintainers that come after.

Possibly Related Posts:


Ripping CodeIgniter a New One, Part 1

July 9th, 2009

To be fair, CodeIgniter has its advantages. I don’t want to make it sound like you shouldn’t use it, because it is in my opinion that it sucks. I’m sure the company behind it thinks quite highly of it and I’m sure some of those reading this also believe it to be either great or acceptable with their project. Not to take away from the project and those using it, but it is just not the way I would have wrote the framework.

If you would like to know, how I would have built it, then take a look at the Yii Framework. Well, then again, there are disadvantages to using the Yii framework as well, but I’m not going to get in to those until I start using it. Furthermore, to maintain quality and for time constraints, it is probably better to use a framework, which flavor you choose and run with it. No framework is going to be perfect, unless you spend the time to build it specifically for your project and even then, the quality depends on your level of expertise.

  1. Short learning curve.

    The advantage of CodeIgniter is that it really does have a really short learning curve. Well, granted I did have an base to build upon, but it isn’t complicated as much as the Zend Framework is to get the code bootstrapped and up and running. The documentation is stronger than most and the structure is such, that once you get past the initial learning phase, you should be building a web application in short order.

    Doesn’t matter what framework you are using, having a short learning curve is almost a requirement. If you are spending more time learning how to use the framework than actually coding then there is something seriously wrong. I do like that it works like others where it can work off a set directory structure to quickly get the controllers and models built, then call the views. Works a bit like Cake in that way, but doesn’t restrict you completely to that set directory path, nor does it restrict you where the directory path is located.

  2. You can place the application files anywhere.

    Well, in this instance it does require a bootstrap file, but the bootstrap is far simpler than other frameworks or class libraries. I don’t like being bored with the small stuff and I don’t like being completely restricted on where I can put my files. CodeIgniter gives me enough freedom that I can forgive the other parts and well, it is probably faster when doesn’t have to configure every directory path and just “knows” where to look for the controllers and other files.

  3. Robust active record database SQL abstraction.

    I kind of scoffed at the idea, but it is really actually convenient. It is lighter than ADODB, but still has majority of the features. While it isn’t exactly how I would have developed it, it works and it works very well. Likewise, it does have neat methods that speed up development.

    For example, it will return an array of objects or arrays and while PDO does this faster, CodeIgniter does this with MySQLi and MySQL as well.

  4. Tutorials and documentation.

    I’m not entirely sure I should give it this one. It doesn’t have a lot of inline documentation or not enough for novices to pick up the parts that aren’t in the tutorials. If you can read code, then the CodeIgniter isn’t anything you should have difficulty with comprehension. Still, some tutorial documentation is far better than none and the inline documentation (that exists) is still better than none. I think it is all that can be asked of the developers to provide who are offering a framework free-of-charge and with a liberal license.

  5. Liberal license.

    It doesn’t matter, if you’re not distributing the project. For those who are and want to sell the product, then it will matter. The license is stated to be comparable to the BSD license. Whether that is the New BSD or old BSD is probably going to take a lawyer to parse the legalese. Basically, you can do whatever you want, as long as you don’t say you wrote the library or hold the developers of CodeIgniter liable for any damages using it might cause.

I suppose the advantages compared to others is debatable. There is really only a few advantages here that the others don’t offer. The first is going to be the deal breaker or starter for many project managers. It matters not, if the framework is written well, follows all of the best practices, and is fast, when it takes forever to get people trained and get started with the project. Well, the Yii Framework does have a PHP script that will build your application for you and also build the skeletons for the CRUD for the models. However, the Yii framework is a bit more involved than CodeIgniter.

I suppose in conclusion, it is not for me to decide how you choose your framework or if you even write your own. This is purely an academic exercise. Take it as you will.

Possibly Related Posts:


WordPress Plugin and Theme Scope

June 27th, 2009

If you are unaware, in many cases the files of your plugin and theme will be run in function scope. If you are expecting that your code is being included in the global scope and your code works that way, then you’ll be caught with a surprise when bug reports creep up about the plugin not working correctly. The problem will persist as the WordPress versions continue to “encapsulate” the plugin and theme code.

The best way to get around it is to always use functions and have all of your code loaded that way. This shouldn’t be a major problem with themes, since the WordPress environment is included in with the functions (not always for plugins when activating). Most themes shouldn’t rely on the non-WordPress globals. I fear that more WordPress theme frameworks will and the problem might be found in those so called frameworks as well.

Possibly Related Posts:


Taking the Fall: Adding Ads

June 27th, 2009

Yes, I took the jump at being evil, but I think the small opportunity to make a little bit of money is a little overwhelming. I doubt I’m going to be making that much, but I want to experiment with it a bit and see what works well. That way, I can go to other people and tell them, “Hey, this works and this doesn’t on a blog.”

I’m going to reorganize my site to where it looks and functions better as a blog and as a personal site. The problem is that this site has too many topics combined together and one of my projects will be to separate and brand the site better. I was thinking it would be better to just use another domain and work on that, but having tried that, I just don’t have the motivation to write on other sites. If I have to go to this blog to write this content and then another site for other content, then I’m not going to write content on those sites.

How I write, is to just write what I’m thinking at the moment. If I’m thinking, well, that would be great to write out a chapter of a fictional story or satire, I’m going to do it at that time. If I’m thinking about some programming subject that has been irking me or something I’ve been thinking about, then that is what I’m going to write about. I don’t think, well I have to go to this blog if I’m going to write that content. I’ve tried that, didn’t work too well.

Methods

  1. Ad Networks.

    I signed up to the LinkWorth web site for text ads and I’m going to try that for a few months while I get the other systems in place. The really cool part about this, is that the ad networks already have a lot of advertisers who are looking to place their ad on your site. So I might attempt adsense, but the reason why I haven’t is that I don’t currently have a system for which to display it intelligently to the visitors.

    Google has this ad system that will manage your ads and I think it will be cool to take a look at that and see how it can be integrated into a plugin.

  2. Banner Ads.

    I’m thinking of testing with unpaid banner ads to see what the click-through is and go through several months of testing to see what people click on. One of the problems I have is that, on the websites I work on, the banners show to everyone, all the time, and the same banners all the time. Why? What is the point of continuing to show a visitor a banner after they’ve clicked on it? Sure, they might click on it, not think they like the site and then leave immediately without bookmarking the site. Well, it is going to be several days or weeks before they’ll want to go back.

    Therefore, an idea I’ve had was to remove that banner and perhaps have enough banners to bring another one in. Something else I would do, is limit how many banners are shown and rotate through them. That way, when an ad is removed by someone clicking on the banner, then another can just show up and the one they clicked on will go away for a few days.

  3. Sponsor Posts – I’m not going to do sponsored posts. Don’t ask.

    The problem is that even through I don’t have any influence (that I know of), I don’t want to lose respect for myself, by doing something I don’t agree with others doing.

With #2, I hope to actually use my own plugin (most of the code I plan to use in other places), and work on it. I believe it will be fun over paying for another or building off another plugin that might not be written the best way.

Organizing the Site

What I have is ton of worthless posts that no one will ever read. Those are for me and I want to keep them where I can look over them, or not as the case seems to have been for the longest time. It will require going through my blog and looking over all of my older posts. I can do it one of two ways, one way is to use a custom taxonomy, which I think will be wise while WordPress Mu is being transitioned into WordPress and the second way, which will be a bad idea right now, is to use the blog ID and create separate virtual blogs, like Mu.

Using the custom taxonomy, will allow me to physically separate the content in the theme. I have wanted to do this for when I wrote stories and scripts. Also, it will allow me to keep plugins and projects separated, but still on my blog. Actually, I hope to move my plugins under the dragonu.net umbrella and have absidongames.com, as a news site for the browser game development. This will limit my blog to just programming topics, stories, satire, and personal life (however, I’m doubt anyone will be interested in that). Any miscellaneous topics can also be on this site.

Not every topic is going to have ads. Having ads on posts about my personal life doesn’t seem ethical. Also, the only people who would be interested are my family and friends and they won’t be clicking on ads. That said, having ads on the computer, programming, and WordPress topics seems like a better place to put them. It is more reasonable and logical, because I would have ads on other sites for those topics. I just wouldn’t put ads on personal topic posts.

Ah yes, I also want to work on the photo albums and tag those as well. Some of those are going to be private and others are going to be public. The issue is that most of those will be of my family and won’t be public, unless you are my family.

Possibly Related Posts:


Netbooks and Hack-n-Tosh

June 26th, 2009

I’m thinking of buying a Netbook and putting Hack-n-Tosh on it to try out Mac OS X. I don’t have any aversion against it. It just seems that a lot of the users are fanboys who would fight to the death to defend it. In which case, the misinformation or distortion of Microsoft Windows.

I really, really hate defending something that I don’t feel anything about. I use Microsoft Windows, because it is easy to use, and when I was a gamer was a requirement for playing those games. The problem is that as I moved away from being a gamer, my choice of operating systems was no longer locked in. Alas, given the advancement of virtual machines, it is completely possible to run Windows on Mac OS X and have it not suck.

Well, my choice would be running different OS on a hypervisor and have them run all the time and just switch back and forth depending on what I need to do. If I want to play a game or use an application that only runs on Windows or better on Windows, then I want to use Windows. If I want to use rsync, program, or whatever, then I want to be able to use Mac OS X or Ubuntu. The problem I have with Linux is that it has issues with Audio and a few other problems.

Therefore, well, Mac OS X would be great, if you have the correct hardware to run it. That is right. You have to have the correct hardware to run it. The reason why Mac OS X doesn’t have hardware compatibility problems is that you don’t have hardware compatibility problems when you make and choose the hardware supported in your OS. Microsoft Windows has to support and does support far more hardware than Mac OS X has to. It seems that people ignore certain facts when it is inconvenient and yet point it out on another platform as a valid complaint.

What I really care about is productivity and I like the small form factor of netbooks and the cheap price. I do want to try out Mac OS X, but I don’t want to pay the higher costs. I will probably buy an actual Powerbook at some point. I like the 24″ iMac form. Really clean, computer components are built-in, and has some neat features. Unbelievable, I liked that it stayed on during an power outage, while all of the PCs powered down. That is really quite impressive.

Actually, it will be a while before I can buy a netbook and well, my plans to build another PC or server will have to wait another year or two. I do plan on upgrading my current PCs RAM to 8GB and buying Windows 7 Professional. To be honest, I’m liking Windows 7, so far, but I made a promise to not hate on Mac OS X until I’ve tried it for a few months or years.

Possibly Related Posts:


Mafia Wars Secrets

June 23rd, 2009

Update: The strategy has changed a great deal and the first item on the list is not accurate. The developers of Mafia Wars seek to make the game not fun anymore and therefore the amount of time you need to invest has risen a great deal. It might still be fun, but it will take a while to get what you need and to get through all of the missions. Happy hunting!

Cheating is not the way to win a game, sure automated tools might enable you to “play” the game without actually having to spend the time to do so. The problem is that if you are going to do that, then why play at all? You don’t get anything by doing so, there is no end movie to enjoy. No prestige that will be given. If you are going to play the game, then play the game.

  1. Put all skill points to energy.

    This has been mentioned on many Mafia Wars strategy guides and well, I knew that before I even started. The key is that a well balanced player is looking at longer game play and sometimes that is great. However, if you want to get ahead quickly and the game allows for it, then it is better to put your skill in a few “powerful” skills than evenly distributed.

    The problem is that you are going to be attacked and lose money, but the thing is that, of course, others need the experience gained from attacking. The key is to put your money in the bank or purchase weapons and inventory when you need them as quickly as possible.

    If you can get to the point where you level every time you run out of energy then the game will breeze by and people will wonder how you did it. “Simple, I just thought logically on the best way to ‘win’.”

  2. Better use of reward points is to purchase skill points.

    The sad truth is that you are going to have to spend a lot of money to get enough rare items from boxes. I tried it, realized that I could have spent that to buy skill points instead and would have been able to level a great deal faster. Well, the game has to make its money, and if you want to enjoy the game, then go for it, but if you just want to get it out of your system, then the best way to level is to put all of your reward points to skill points.

  3. Earn reward points by signing up to Netflix’s, Gamefly, Travian, and other reputable companies.

    Most of the reward points services are going to rip you off or going to be impossibly difficult to complete. Don’t go for something that will probably go for your credit card and then continuous charge you for a service you aren’t going to need with extremely difficult opt-out procedures.

    I’m not saying that all of the companies are scams, but well, if you don’t know or trust the company, then don’t go for it. Netflix and Gamefly are useful services, in that there is value to them. If you were going to get them anyway, then what better reason than to get a 200+ reward points. I would follow rule 2, but buying a few boxes for the hell of it never hurt anyone and you might get lucky. Just don’t put more than a few in to it and put almost all to buying skill points.

  4. Join Mafia Wars mafia enrollment groups.

    Who has 500 real life friends on face book? I don’t. I’m sure that most of you don’t either. By joining a group like this you can get the 501 famed mafia to protect and allow you to offset the missing attack and defense skill points. I will advise that you do not join the so called free Godfather reward points groups, because I suspect foul play.

    Well, this could be termed “cheating,” but since it seems to almost be sanctioned by the developers, I will say that it is free game and exists in the gray area for the time being until the Mafia Wars terms of use is updated to prevent it.

  5. Put strong players in your top mafia.

    It will take a few weeks to get the max amount you can have in your mafia for attacking and defense. Doing so will capture some high level players to help you decrease the costs of energy to do jobs and increase the energy from doing jobs. This will enable the game to go much faster. Eventually, if you timed it right, you’ll be at a high enough level for others to want to place you in their top mafia and this will help you out to further your chances at leveling quickly.

  6. Do Cuba as soon as you can.

    Cuba gives you a great deal more energy, at almost double the energy costs at 10% for wheelman and 10% for mastermind, will be at higher ratios, for the max of the two. Doing this, will allow you to quickly “beat” the Cuba tiers and gain not only skill points to put towards energy, but also defense and attack bonuses and powerful weapons for attacking.

    After doing these, you should be at a level to do the jobs at similar levels in the New York job tiers. The problem with these is that the underboss and boss job tiers are very time consuming to complete and will require going back to the old job tiers to get the items necessary to complete the last two.

  7. Don’t Add too many friends in a single day.

    There is a slight problem with rule #4, in that Facebook likes to cancel accounts that add too many friends in a single day. Facebook thinks you are a scammer, bot, whatever and will close your account. If you are going to do rule #4, then be careful. Be careful with your privacy settings, so make sure that your email, address, and most settings about you are private to no one, so that you don’t have some mysterious guy showing up one day with a chainsaw (there are some real crazies out there, only a few with chainsaws that want to cut down trees). The other is only add a few more than allowed in Mafia Wars per day or week. There isn’t a few point to spend all of your time trying to get members in your mafia.

    If it takes a month to get 501 mafia members then great. It beats spending 23 hours trying to get 501 in a single day and then having Facebook close your account in a week.

Possibly Related Posts:


Chrome Shelled Regios Season 1 Complete

June 22nd, 2009

It appears that there will be either a season 2 or more seasons in the future. They decided to do the first season as a stand-alone, but leave it open to continue at a later point. I really hope the novels get translated, because it appears to be a book series, I would very much enjoy. As well, the manga doesn’t have too many volumes and will also be easy to purchase.

I haven’t yet read the novel series (can’t speak or read Japanese or whatever they call it in Japan), but I’m going to check to see if it will be coming to the US any time soon. The manga probably will have an easier time being translated, since more people will be more willing to “read” manga than a light novel.

That said, this also gives the light novel a chance to get ahead of the anime, so that the anime doesn’t have to use a lot of filler arcs as to not overcome the source material. This is usually looked down upon as it can break away too much from the arc of the original author and those who read the source material don’t like it. Often the filler arcs don’t have as much thought put into them, so are of lower quality story wise than what is in the source material. This isn’t always the case. However, the examples are few and far in-between.

The anime does give a sense of wanting to learn more about the world and the background of the series. The source material will have that, but I believe many of us will have to wait until the series is picked up by one of the networks or by one of the US distributors for the DVDs. In that way, the manga and light novels may also be picked up.

Possibly Related Posts:


Extending the Life of Brakes

June 21st, 2009

It is quite simple really, you don’t use them.

I try not to use my brakes as much as possible, so this means that unless I’m too close to the car in front of me or going down a hill, I’m not going to brake. This works better on highways, than city streets. On the highway, I almost never have to use my brakes. My driving used to be primarily highway driving, but even in the city, you can coast to a stop, if you see that the light is red.

The faster you are driving the more force is required to maintain that speed. You have the wind drag and pavement friction acting on the car when you move past 60 miles an hour. Therefore, braking is redundant, unless you are extremely close to the car in front of you and need to stop even quicker. If you stay far enough back from the car in front, then you should be able to coast down to the proper speed before you ram in to that car.

There are problems with this method. Most drivers rely on the brake light to inform them that they too should put them brakes on. They will only know to slow down, if they are paying attention to the distance and most likely will force them to brake even harder to keep from slamming into you. It is wise to pay attention to the car behind and make sure they are at a far enough distance that they will be able to know to slow down as well or you may want to tap the brake to let them know.

I do this to keep from having to change the brakes on my car every six months, but it is still a good idea to get them checked and changed. A recent near accident let me know that it is better to have them when you need them and they better be in working order when you do.

Possibly Related Posts:


Short Term Jobs Lowers Unemployment for the Short Term

June 20th, 2009

Of course, when you flood the job market with jobs that expire in a year or two, it will decrease the unemployment. That is common sense. However, the true measure of decreasing unemployment is either longer term government jobs, because they have a history of lasting forever, until either cutbacks are made (every decade or two). The second is creating jobs where the scope is longer term and the end is not foreseen. A clerk probably isn’t going to know that in 20 years, the company is going to go under, nor does the owner know that the company will. It is entirely likely that the job will carry on long after the original employee passes on and the next generation comes on.

An analogy can be made to the 1929 stock market crash, where those with a lot of money would flood the stock market on Friday, and then sell it all on Monday. This only served to destroy the stock market faster. Well, one of two events might happen. Either businesses are going to get the impression that the market is picking up when the unemployment goes down further or it is going to continue for the same reason it is now. What is going to happen to those who get the contracts to build the government projects after the job is finished?

Possibly Related Posts: