jump to navigation

Biggest Project Yet (For Domain Management) May 30, 2011

Posted by ismywebsite in general.

So it’s getting to be quite frustrating for domain owners (who bought domains through the system) to manage them. So much so that I’ve got a request lately to transfer a domain to another account. This defeats the entire feasibility of the domain system if they are somehow subpar domains, not able to be controlled, or their reliability depends on my limited time.

Thus, it’s really important to get a huge project finished, that would be used for a lot of systems. Essentially, it’s a proxy. It is able to crawl and explore the web in the same way my browser does. With a catch – it all has to be PHP-based. If I ask it to visit a site, it needs to keep track of it’s cookies that it’s picked up. If I ask it to click links, submit forms, etc… they need to be submitted such that it’s undetectable that this is a PHP client and not a standard browser.

My previous attempts have fallen short of working, due to my limited understanding of the whole cookie protocol, as well as very tight security on the websites I’m trying to access. If one thing is wrong, the whole request fails, making it very difficult to figure out what went wrong. Yet any browser I use has no trouble doing the exact same task (no problem at all).

The end goal is that you would be able to set up new nameservers for a domain that you own, and it would log into the applicable registrar (1and1, GoDaddy, WildWestDomains, MyDomain, etc…) and use their control panel to change the nameservers. The relevant output would then be returned. So effectively, an API could be built. In the future, this would expand. It would be possible to change the WHOIS details. It may even be possible to renew domains automatically. (Registration would still require approval to prevent system exploits.)

What else? This would allow for automatic daily calculation of AdSense earnings. AdSense does not have an API. Currently, I have to manually download a CSV, open it in a text editor, then copy and paste it into a tool I built to parse it. With this system, the tool could run each night (or a few times a day) and automatically grab that data. It also allows us to hook up with many other advertising networks, majorly expanding the selection. Finally, I was even considering Minecraft servers. However, all these do not have APIs and so they need a proxy / browser simulator to really be usable.

The main reason I’m posting this is to see if anyone knows of software that can do it already, or may know a developer who can build something like it. This is something I really would like to get going on.

Welcome New Team (And Major Wiki Progress) May 19, 2011

Posted by ismywebsite in general.

This is something which will take some time to make a difference, but as of around midnight yesterday, the wiki is fully updated with class definitions. I worked 18 straight hours to get this entirely finished (starting roughly 5 AM through to just past midnight, with about an hour’s break).

In addition, it’s increased efficiency and security because:

  • Approximately 30 more unused classes (didn’t keep track of the exact number) got cleaned up. Some of them could have been used to obtain information or might have had SQL injection vulnerabilities.
  • I completed an update which should make it extremely easy to find the methods (as opposed to locations where they are called). This should save considerable time.
  • A number of methods were changed to a private status. Most notably some common methods in the center classes (these handle private messages, advertising boxes, and most of the volunteer panel tools). A lot of classes had unnecessary public methods, meaning anyone can directly execute them, which may not have the desired result.
  • Initial construction on several classes was also simultaneously completed.

Classes that were built by former developers Nick Liu and John Stimac, still need some help to be documented (or their use discontinued if recommended). Nick has stashed a copy of all the source before their access was removed, and both developers should be able to get the wiki password from each other and make the edits directly. If there are any problems, they also have my email.

I’ve also been quite pleased with finding a few decent members for our new team. Further training awaits, but at the moments it’s looking like a new team consisting of Kyle Gavalchin, Andrew Sudduth, and Bogdan Lupandin may be materializing. All three have been long-time clients of the service and it should be a pleasure to work with them. I am still accepting help offers, though three people should be a large enough team.

The first priorities are getting all the staff trained, making sure they know how the system works better than the last team (and not assuming anything – I will drill them with questions until I can be sure they know what they’re doing), then finishing the now three-months-overdue volunteer panel and backup system. I’m also going to finally get the AdSense credit payout working which will hopefully mean the clients who aren’t having a tough time can optimize their sites.

I’m setting a tentative date of May 24th (next Wednesday) for reopening the acceptance of new websites, upgrades, and support. I should have all the nodes back under control by then. There appear to be some problems with out of sync passwords, which really need to be resolved so they don’t occur at all, most of the nodes need to be cleaned of some huge accounts, and I need to shuffle all the Node 7 accounts to other nodes. This all takes either planning and having proper tools set up, or forever.

In terms of this paid hosting, it will simply appear as an alternative in the future, where if you want to remove the limits to your account, you can just choose unlimited hosting. Obviously, although I can always find more, the amount of storage and bandwidth available are not unlimited. I just haven’t set a limit in your account.

Updates And Thoughts May 18, 2011

Posted by ismywebsite in general.

I reached a startling realization this morning. If I kept going at the current pace in filling up the wiki (leaving time to help clients and actually develop some features around that), I wouldn’t be finished until mid-July. That wasn’t going to work. I devised to use the assembly line method instead. There are huge results to be gained by grouping like tasks. For example, getting the properties of different classes from the database is done in a very similar way for every database, so by doing them all at once, it only took me 4 solid hours of effort. But most importantly – that battle is over. Doing that on an as-needed basis would likely take twice as long, adding in all the time to load the control panel and get into the zone.

I hope to employ a similar method to add in the resources and methods of each class. Some classes have hundreds of methods, so I’m not sure that will be able to be completed as quickly. I’m aiming to model this after the PHP.net website, which showcases the functions along with examples. My hope is, with all the information in place, readily accessible, with examples, development would be extremely efficient.

I’m also looking to trim some classes. There are 49 standard classes and 7 utility classes. Most are fairly necessary, however there are about 6 left from the project management system that I’m not sure what’s happening to. There’s also a couple from a stub system. I can’t remember what that was about. In the past, I’ve trimmed over 150 files out of the /c/ directory, which were renamed, moved, or had been created by developers with complete disregard for any standard and I couldn’t even understand them anymore. (Not be any version 5 developers – don’t worry.)

As much as the version 5 developers love debating about this kind of stuff (just as much as I do), I couldn’t manage to find with them any classes that really were pointless and wouldn’t help speed things up. So I have to assume that their system with 27 classes is therefore at most 48% complete. If those classes are largely complete, that’s really amazing progress considering they’ve only had a month and a half.

The one thing I’ve also been asking and trying to figure out with them, is what they see as the major advantage of version 5 over version 4 – as in what would be built in version 5 that couldn’t conceivably be added to version 4. It seems they aren’t so sure either.

One thing that was different in version 5 they expressly mentioned was pages of the site being stored in a database format. However, we agreed this was a disadvantage for the reason of not being able to edit with FTP. (Thus limiting all editing to use only one editor, which cannot possibly be the best at everything.) So we decided on a hybrid format, which I’ve almost finished defining now.

So, my first priority is to build a system which I’m not the only one who knows how to program it, and all the information is fairly easily accessible via the wiki. There are a lot of systems in IsMyWebsite – over 100,000 lines of code. (This number is down because I’ve been cleaning things out.) So that’s why I’ve made it really really important that everything is fairly standard. Across tables and classes, all the base and standard methods are identical, with many matching field names. So most of the time, the wiki just serves as a quick refresher on how to use the unique parts of one class or another.

If anything, I think version 5 has really revealed two things:

  1. I need to do a lot better at communicating how to use the system (and I hope the wiki will accomplish that).
  2. The developers are capable of a lot more than they were initially assigned (assuming they know how to use the system). So once things get sorted out, I’m really hoping to make a lot of leaps forward.

Future of IsMyWebsite May 12, 2011

Posted by Brendan McNiff (cobrastrike) in general.

There has been much debate lately in public forums, and quite a bit of propaganda as well leading to speculation of exactly what has been happening.

Since one side seems to be constantly on display, I will show the other.

First thing first though, no matter what internal debates may be happening there have been numerous talks on how to make it to where we can best serve all clients. As with any multi-national team there are inherent things that we will all disagree on. With that being said, the development team as it stands was not looking to hijack anything as so many have falsely and ignorantly tried to state. The only mission in the decision to develop a completely re-coded version was to make one that could be easily expanded, repaired, and secured. It was decided that Matt was not going to be involved as we were looking to have something to present as an alternative, and because we were trying to get away from the idea that there should be such a degree of modularization that it made simple bug fixes take three times as long.

No matter what direction is chosen in the end, it will be one that keeps clients in mind. We are looking to increase reliability while also giving you more flexibility. It is unknown exactly how we can achieve this between the “sides” at this time, but one way or another it will be accomplished.

Waste Of Another 2 Hours May 11, 2011

Posted by ismywebsite in general.

Sorry I haven’t formatted it, but I just wanted to illuminate exactly what it’s like for me trying to reach any progress here. This has been ongoing for the past two weeks:

3:30:59 PM me: Hi
3:49:35 PM Nick Liu: Huh?
3:51:16 PM me: I said hi
3:51:21 PM Nick Liu: Hi
3:51:34 PM me: Do you know any good developers who could help with my site?
3:51:41 PM Nick Liu: Nope
3:52:24 PM me: Okay well thanks for looking into it
3:52:36 PM me: What are you going to do with all your v5 code?
3:52:59 PM Nick Liu: Use it.
3:53:13 PM me: For what?
3:53:36 PM Nick Liu: Something
3:53:42 PM me: Hmm
3:53:54 PM me: I know I reused my base class code in a couple projects already
3:54:09 PM Nick Liu: Okay…
3:54:11 PM me: It’s really awesome to just make tables and voila they work
3:54:38 PM me: On a scale from 1 to 10 how upset are you right now?
3:54:44 PM Nick Liu: 1
3:54:52 PM me: Okay
3:55:00 PM Nick Liu: What do I have to be upset about?
3:55:46 PM me: Well that I’m not using your code
3:55:56 PM me: Without serious modification
3:56:05 PM me: That the entire site is dead
3:56:06 PM Nick Liu: Okay…
3:56:18 PM me: I don’t know I guess that doesn’t phase you
3:56:31 PM me: It just doesn’t matter to you
3:56:46 PM me: You just don’t care
3:56:58 PM Nick Liu:
3:57:00 PM me: Why spend all that time – just wasted?
3:57:19 PM Nick Liu: I never typed that the time was wasted…
3:57:57 PM me: Okay
3:58:02 PM me: You said you can reuse it
3:58:33 PM me: Have you moved your files from our hosting?
3:58:40 PM me: For your website?
3:58:52 PM Nick Liu: I haven’t left IsMyWebsite.
3:59:09 PM me: Well I’ve recently had to recommend that
3:59:22 PM Nick Liu: I don’t have anywhere else to go… so…
3:59:33 PM me: Nobody else does either to be honest
4:00:23 PM me: What do you want to have happen?
4:00:32 PM Nick Liu: What do you mean?
4:00:38 PM me: With the site?
4:00:45 PM Nick Liu: My site?
4:00:55 PM me: No your host you’re dependent on
4:01:06 PM me: The one you make some serious promises to
4:01:23 PM Nick Liu: Live long and prosper… but I don’t see how you’re working towards that… :\
4:01:59 PM me: Well, I don’t see how you are either.
4:02:27 PM me: It’s been pretty clear from the start, the clients didn’t want version 5.
4:02:35 PM Nick Liu: Are you sure?
4:02:37 PM me: I like the features
4:02:46 PM me: Yes find me counterexamples
4:02:54 PM Nick Liu: http://i.imgur.com/hfNJe.png
4:03:29 PM me: I want a better DNS updater
4:03:43 PM me: And I like the simplicity of the layout
4:03:44 PM Nick Liu: That’s not difficult…
4:03:47 PM me: Well
4:03:54 PM me: Why can’t you just do it?
4:04:17 PM Nick Liu: I don’t even know how it’s set up, but I’ve looked at record files, and they have obvious patterns.
4:04:29 PM me: Okay
4:04:47 PM me: I’m trying to clean things up and get documentation in place
4:04:57 PM me: That’s really my top priority
4:05:21 PM me: The system is very easy to use but of course it can be frustrating if you don’t know how
4:05:50 PM me: And it’s worse when I’m unreachable, and you don’t bother to email
4:06:11 PM Nick Liu: You still use flatfiles. >,>
4:06:24 PM me: I’m willing to change that
4:06:32 PM me: I’d like to be able to specify titles and meta
4:06:40 PM me: And have some sort of versioning on pages
4:06:58 PM me: But right now, it’s flat files because I use a lot of FTP to edit it
4:07:06 PM me: I don’ thave an alternative
4:07:11 PM me: To FTP that really does what I need
4:07:36 PM me: You promised an editor at one point if I remember
4:07:45 PM Nick Liu: The FTP-based editor?
4:07:58 PM me: Well I don’t really care about FTP anymore, but it needs to be web based
4:08:10 PM Nick Liu: That’s been done a long time ago…
4:08:17 PM me: Where?
4:08:30 PM me: I never saw it how can I guess that?
4:08:45 PM Nick Liu: Staff Panel of the webhost management system that my team and I are building
4:10:13 PM me: On top of a different platform
4:10:33 PM Nick Liu: What?
4:10:39 PM me: In compatible with the site
4:11:07 PM me: Change everything just for the heck of it
4:11:26 PM Nick Liu: I’m not understanding what you’re typing…
4:12:01 PM me: Can I borrow your staff panel and editor?
4:12:24 PM Nick Liu: You’ll have to request permission from the owner, Brendan McNiff.
4:12:42 PM me: He built the editor?
4:12:56 PM me: Or he runs this separate team you’ve all got?
4:13:22 PM Nick Liu: He’s hosting it all, and since he’s older than the other developers, we’re letting him own it.
4:13:31 PM me: I see
4:14:26 PM me: When I told my mom what happened, she right away had a fear the this ‘Brendan’ was planning to relaunch and steal all the clients as potentially paid customers
4:14:54 PM Nick Liu: Well, you seem to want to promote that.
4:14:55 PM me: Her entire business website is lost as a result of not developing the current version of the site
4:15:22 PM me: Many client shave said
4:15:30 PM me: They will gladly pay me if they can just have something stable
4:15:37 PM me: They they leave
4:15:41 PM me: And I never see them again
4:15:47 PM Nick Liu: Paying you won’t get your system stabler faster…
4:15:53 PM me: Why not?
4:16:10 PM me: I can hire some cheap coders and they will follow the standard
4:16:22 PM Nick Liu: Oh, okay.
4:16:24 PM me: They’ll email me whan they have problems
4:16:34 PM me: They’ll communicate their confusions
4:16:51 PM me: I doubt they’ll launch secret side projects
4:17:34 PM me: And it will give the stability of being able to afford the servers
4:17:46 PM Nick Liu: I see…
4:17:50 PM me: And it will also have less clients so I can focus on each
4:18:27 PM me: Do you think I want to go paid? No I just have absolutely no idea what to do
4:18:53 PM Nick Liu: Why not stay on IsMyWebsite 3.0 ?
4:19:03 PM me: Unencrypted passwords
4:19:18 PM me: I had a lot of criticisms then, though not nearly as many as now
4:19:30 PM me: The coding was in 50 different styles
4:19:49 PM me: I had 5 different locations where website accepting is processed, and they all did it slightly differently
4:19:57 PM me: Referencing slightly different acceptance messages
4:19:57 PM Nick Liu: I would rather have a lot of criticisms than even more criticisms like now.
4:20:06 PM me: As would I
4:20:36 PM me: I still have the files of 3.0 – did you want to revert tonight?
4:20:55 PM Nick Liu: Since IsMyWebsite 3.0 works so much better, it should be used.
4:21:18 PM me: It is the result of 2 years of development on IsMyWebsite version 2
4:21:39 PM me: Which is in turn the result of 1 year of development on IsMyWebsite version 1
4:21:55 PM Nick Liu: But the point is that it worked /much/ better.
4:22:18 PM me: It had a lot of bandaids
4:22:24 PM me: Duct tape
4:22:32 PM Nick Liu: Still, it worked /much/ better.
4:22:37 PM me: Yes it did
4:22:56 PM me: It just wasn’t very functional in the core
4:23:01 PM Nick Liu: Still, I’d much rather use IsMyWebsite 3.0 than use IsMyWebsite 4.0
4:23:02 PM me: It had serious security problems
4:23:09 PM me: Okay
4:23:17 PM me: Tell me what was better
4:23:21 PM me: I want to solve this
4:23:39 PM Nick Liu: Well, website creation…
4:23:49 PM me: Yep
4:23:58 PM me: I had to scrap those together
4:24:06 PM me: What did you want changed about that?
4:24:08 PM Nick Liu: Still… it beats IsMyWebsite 4.0, which has none
4:24:15 PM me: None?
4:24:23 PM me: You mean no default website?
4:24:29 PM me: Or what exactly doesn’t happen?
4:24:46 PM Nick Liu: IsMyWebsite 4.0 can’t make hosting accounts, can it?
4:24:54 PM me: Lol
4:24:59 PM me: You built the functions to enable that
4:25:07 PM me: At the very core – those JSON ones
4:25:21 PM me: All you do is make a Web object and do this
4:25:30 PM me: $myweb = new Web(); $myweb->accept();
4:25:34 PM me: And it’s created
4:26:07 PM Nick Liu: :\ . I didn’t see anything implemented…
4:26:14 PM me: No it was in WebClient before
4:26:27 PM me: Basically, I think I didn’t explain the the Client is what you want to create
4:26:33 PM me: 90% of the time
4:26:43 PM me: The other 10% is the Admin object
4:26:56 PM me: Which is used for the volunteer panel
4:27:11 PM me: It just has those high level methods we don’t want accidentally getting executed
4:27:23 PM me: Like terminating an account
4:27:29 PM me: The client can never do that
4:27:35 PM me: Only an admin can approve that
4:27:45 PM me: (In case accounts get hacked – happens all the time)
4:27:48 PM Nick Liu: $myweb = new WebAdmin(); $myweb->terminate();
4:27:49 PM Nick Liu: Oops.
4:27:55 PM me: That’s it
4:28:09 PM Nick Liu: That’s a really lame defense…
4:28:11 PM me: Yeah well we have a nice backup system as soon as it’s built
4:28:42 PM me: If 90% of the code uses the Client version
4:28:58 PM me: Then it forces a hacker to find a vulnerability which uses the Admin object
4:29:31 PM me: Well it’s also for sorting methods
4:29:38 PM Nick Liu: With sanity checks performed like people logically should, there should be no need for such a lame defense.
4:30:27 PM me: Okay what about the case where we have a getProfile() method
4:30:34 PM Nick Liu: Okay…
4:30:36 PM me: And both clients and admin level use the same method
4:30:50 PM me: But Admins should see it differently
4:31:05 PM me: A different format for the volunteer panel
4:31:10 PM me: As opposed to the client panel
4:31:16 PM Nick Liu: The volunteer panel client code would generate it…
4:31:22 PM me: We don’t have to remember two different method names
4:31:23 PM Nick Liu: The client panel client code would generate it…
4:31:30 PM me: Well
4:31:39 PM me: profiles are comon place throughout the volunteer panel
4:31:49 PM me: If you search for users
4:31:52 PM me: If you pull up a website
4:31:59 PM me: If you want to view the list of most active users
4:32:10 PM me: Answering support
4:32:12 PM me: etc…
4:32:23 PM me: You could have a shared file they all reference
4:32:36 PM me: But why not just use the classes that they already have access to
4:32:56 PM me: If we need to change the profile because we added a new field
4:32:56 PM Nick Liu: Look… it’s the client code that’s intended to do the displaying.
4:33:06 PM me: No volunteers need a display
4:33:13 PM me: If you search up a user you need their details
4:33:35 PM me: So you can say how’s the weather in ____? and call them by name and see that they have 5 websites, one of which was not accepted yet
4:33:59 PM me: See that they were an advisor, email them, manage their sites, give them credits
4:34:11 PM me: It’s all standard
4:34:18 PM Nick Liu: All should be done in client code
4:34:20 PM me: Every place a user is seen it should look similar
4:34:26 PM me: Why?
4:34:33 PM me: What do you mean by client code?
4:34:38 PM me: Clientside?
4:34:44 PM me: JavaScript parsing?
4:34:46 PM Nick Liu: Client code is the code that executes outside of a class
4:35:25 PM me: http://www.google.ca/search?q=client+code&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
4:35:31 PM me: I can’t find any reference to that
4:35:38 PM me: But okay
4:35:51 PM Nick Liu: You learn it in Computer Science class.
4:35:54 PM me: By the context I get that you’d like each page to include that redundant code
4:36:14 PM me: No in computer science class I learn that client code is executed by a client in a client server relationship
4:36:22 PM Nick Liu: What redundant code?
4:36:29 PM me: The code to display a user’s profile
4:36:36 PM Nick Liu: It’s not redundant if it’s different for different places. >,>
4:36:42 PM me: Why is it different?
4:36:49 PM me: Why should it be?
4:37:25 PM Nick Liu: Because that’s the immediate code that interacts with an object
4:37:47 PM me: I don’t understand
4:37:57 PM me: When you need information about a client (user) of the site
4:38:07 PM me: As an administrator
4:38:11 PM me: Or volunteer
4:38:26 PM me: Why would you need different information in tool X, from tool Y?
4:38:37 PM Nick Liu: You would use the same tool. :\
4:38:49 PM me: So thre’s only one tool that displays client information?
4:39:00 PM Nick Liu: In the Staff Panel, sure
4:39:03 PM me: Okay
4:39:07 PM me: What tool would that be then?
4:39:23 PM Nick Liu: “View User Info” or something like that.
4:39:27 PM me: Oh I see
4:39:31 PM me: So when I search for users
4:39:38 PM me: I have to click one extra time
4:39:46 PM me: And go back if that’s not hte one I wanted
4:39:53 PM me: Then click on the next ‘View User Info’
4:39:55 PM me: Then go back
4:39:59 PM me: Then click the next
4:40:05 PM me: Sometimes I search through hundreds of users
4:40:20 PM me: That’s not very efficient, when it can just show me their details right away
4:40:34 PM Nick Liu: Why can’t you get the user info right away? :\
4:40:43 PM me: You said it’s only in the one tool
4:40:52 PM me: So I need to ask that tool for it
4:41:14 PM me: What do I do? include it in the source?
4:41:17 PM Nick Liu: Type in a username or a user ID… Press [Enter]… There’s you’re user info
4:41:43 PM me: Okay say I want to find a specific user with a partial name, email, or website URL?
4:41:53 PM me: Multiple users match the criteria
4:42:07 PM Nick Liu: How do /you/ handle that?
4:42:21 PM me: Well you just type it in the search bar and it comes up
4:42:37 PM me: In this case you’d need an extended search so there’s a checkbox
4:42:37 PM Nick Liu: Same here
4:42:51 PM Nick Liu: Yeah, no problem. I had that in mind too
4:43:11 PM me: Okay so your ‘View User Info’ is really the same as my ‘Profile Search’
4:43:22 PM Nick Liu: Sure
4:43:25 PM me: Alright
4:43:31 PM me: Then it serves that one tool
4:43:36 PM me: Now we build your ticket system
4:43:40 PM me: And there’s a list of tickets
4:43:43 PM me: I pull one up
4:43:51 PM me: I’d like to see details on that user
4:43:54 PM me: Right away
4:43:59 PM me: So what happens here?
4:44:25 PM Nick Liu: You would… click a link?
4:44:30 PM Nick Liu: Load it with AJAX for all I care
4:44:40 PM me: That’s the problem. You should care.
4:44:50 PM Nick Liu: Okay… what’s wrong?
4:45:05 PM me: What’s wrong is wasted time – even a few seconds per ticket
4:45:17 PM me: If we did a million tickets
4:45:23 PM me: That really adds up
4:45:25 PM Nick Liu: You want user info immediately available?
4:45:27 PM me: Yes
4:45:52 PM Nick Liu: The exact same output as “View User Info”?
4:45:56 PM me: Yes
4:46:07 PM me: I need all the same details
4:46:13 PM Nick Liu: Okay, then call the client code of View User Info.
4:46:14 PM me: This is only two tools which would use that
4:46:25 PM me: There can be many more
4:46:35 PM me: So doesn’t the client code have some kind of authenticating header?
4:46:52 PM Nick Liu: It does, but the header only loads once, of course.
4:47:21 PM Nick Liu: It’d be foolish to send headers after headers are already sent.
4:47:45 PM me: So it’s extra overhead. I get that’s not a huge issue. You also have to make your User Info Viewer accept variables as input. Again, not a huge issue. It’s just messy is all.
4:48:10 PM Nick Liu: It naturally has to receive $_REQUEST
4:48:11 PM me: Oh and there’s an extra search bar
4:48:23 PM me: Just inserted below the support ticket
4:48:26 PM me: Just randomly
4:48:40 PM Nick Liu: :\
4:48:44 PM me: And probably something about the number of results found if you add that
4:48:59 PM me: Maybe you’ll have some other footer or header
4:49:15 PM me: I don’t know – but how would you add a footer or header without it going in tickets?
4:49:30 PM me: Would you then make a variable for $display_headers?
4:49:37 PM Nick Liu: No…
4:49:40 PM me: Okay
4:49:49 PM Nick Liu: An option is to use ?ajax=true
4:50:18 PM me: Okay well sure it works. It’s just messy.
4:50:20 PM Nick Liu: Or if you’re include()ing internally, just include it; the software automatically detects what needs the header.
4:50:31 PM me: I see
4:50:38 PM me: I’ts just messy
4:50:44 PM Nick Liu: Not really…
4:51:03 PM me: So what do I do?
4:51:23 PM Nick Liu: $_REQUEST[‘uid’] = 5; include(“tools/userinfo.php”);
4:51:29 PM Nick Liu: ^ That doesn’t look very messy to me.
4:51:44 PM me:
4:51:50 PM me: How do I turn off the search bar?
4:52:13 PM me: You will have a search bar right?
4:52:17 PM Nick Liu: Sure
4:52:23 PM me: Okay so how do I disable it?
4:52:53 PM Nick Liu: Just like how the software detects what is going to need the header, the search bar can deactivate just as easily.
4:53:02 PM me: Now here’s another thing. What if that page uses the variable $_REQUEST[‘uid’] for something else?
4:53:11 PM Nick Liu: How?
4:53:16 PM me: Say it’s about a user and you want to find people they referred
4:53:22 PM me: So you give it a uid
4:53:36 PM me: And below that it needs to get profiles of the referred users
4:53:45 PM me: Then you want to do something else with the original uid?
4:53:54 PM Nick Liu: Export
4:54:01 PM me: Yeah again it’s messy
4:54:01 PM Nick Liu: $uid = $_REQUEST[‘uid’];
4:54:14 PM me: Now say your other tool uses that $uid variable
4:54:14 PM Nick Liu: Think about your output now
4:54:22 PM me: Someone is working on it
4:54:25 PM me: And they decide hey
4:54:31 PM me: I need to use the variable named $uid
4:54:36 PM me: And they assign it to something else
4:54:39 PM me: Well
4:54:43 PM Nick Liu: Do you have any idea how ugly the output will be?
4:54:47 PM me: They don’t go check all the other scripts to see what broke
4:54:50 PM Nick Liu: And you’re calling the source ugly…
4:55:07 PM me: I assume your user profiles would look okay stacked
4:55:21 PM me: That’s all it is
4:55:29 PM me: Here’s a list of users referec
4:55:36 PM me: And then a stack of profiles
4:55:38 PM me: And done
4:55:56 PM me: With my system you just make a UserAdminList and call one function
4:56:04 PM me: And you’ve got your full list generated and formatted
4:56:29 PM Nick Liu: Or you can do that
4:56:42 PM me: How can you do that in your system?
4:56:48 PM me: You said the profile code goes in the client
4:56:55 PM me: “client code” as you call it
4:57:06 PM Nick Liu: You can take that approach that you want… if you want.
4:57:07 PM me: So there’s nothing in the class
4:57:38 PM me: Do you stop and think about what’s happening to the site?
4:57:38 PM Nick Liu: If you really want to reuse that code so many times, put it in the class
4:57:46 PM me: Well
4:58:01 PM me: Even if we used it once, we still know where it is
4:58:13 PM me: Can find it any time
4:58:24 PM me: Then in the future, if we need it elsewhere it’s right there
4:58:28 PM me: Ready to go
4:58:40 PM Nick Liu: If it’s an “always” thing, make it standard, like my StandardDB class.
4:58:42 PM me: You just saved potentially hours of compiling together information
4:58:52 PM me: It’s not an always
4:59:00 PM me: It’s only an always if you have a UserAdmin object
4:59:19 PM me: If you don’t, then you’ll never ever need it
4:59:46 PM Nick Liu: :\
4:59:52 PM me: Plus, there’s a profile of nearly every object
5:00:00 PM me: For a website, you have a profile if you need it
5:00:06 PM me: For an advertising box, a profile to see
5:00:12 PM me: You can’t put those all in the StandardDB
5:00:22 PM me: I hope you can see that gets very messy
5:00:44 PM me: Your StandardDB will get very long and hard to manage
5:00:48 PM Nick Liu: If you want to make it exceptional to StandardDB, create a StandardProfile, then.
5:00:55 PM me: Lol
5:01:03 PM Nick Liu: StandardDB just does getters and setters
5:01:05 PM me: It’s still a mess of things that relate to objects
5:01:22 PM me: What is a StandardProfile?
5:01:30 PM me: Like if I was to pick one up
5:01:37 PM me: What would it look like?
5:01:47 PM me: What could I do with it?
5:01:48 PM Nick Liu: You can get your profile output for any database information
5:02:01 PM me: Okay that’s a use
5:02:05 PM me: But what’s the object?
5:02:13 PM me: What’s the entity that’s represented
5:02:24 PM me: What’s the tangible thing you’re representing in that?
5:03:15 PM me: You can’t answer that can you?
5:03:39 PM me: It’s a central premise of object oriented programming
5:03:45 PM Nick Liu: No… I got preoccupied with an orchestra friend panicking.
5:04:05 PM me: Okay well however long you need?
5:04:14 PM me: Where can I buy a StandardProfile?
5:04:30 PM Nick Liu: What in the world…?
5:04:40 PM Nick Liu: You don’t purchase a StandardProfile…
5:04:43 PM me: What is a StandardProfile?
5:04:58 PM me: If I look at one
5:04:58 PM Nick Liu: Getting example…
5:05:55 PM me: Okay then
5:06:01 PM Nick Liu: Where’s the display method?
5:06:08 PM Nick Liu: Your display method for a “Profile”
5:06:17 PM me: You have a copy of all my code?
5:06:24 PM Nick Liu: Yes…
5:06:42 PM me: Good thing it’s outdated
5:06:52 PM Nick Liu: Okay…
5:07:03 PM me: getProfile() in UserClient or UserAdmin
5:07:16 PM me: In your copy
5:07:41 PM me: I didn’t finish it for most of the other classes because I didn’t have time
5:07:55 PM Nick Liu: That can be done in one class
5:08:14 PM me: I’m sure it can
5:08:28 PM me: I don’t see why that’s better than doing it in two classes
5:08:31 PM Nick Liu: Do that then, and override if necessary
5:08:44 PM me: That’s what I’m doing
5:08:56 PM Nick Liu: One class for getProfile(), overridden when needed
5:09:06 PM me: That’s what UserAdmin is
5:09:25 PM me: getProfile is but one example
5:09:27 PM Nick Liu: You repeat getProfile() in many other classes…
5:09:32 PM me: Yes
5:09:34 PM me: That’s the point
5:09:38 PM me: It should be standard
5:09:45 PM me: You want output about an objet
5:09:48 PM me: Any object
5:09:54 PM me: You don’t have to look anything up – just getProfile()
5:10:33 PM me: Can you honestly tell me you would never use something like that if you were coding?
5:10:36 PM Nick Liu: getProfile() can be fully automated
5:10:48 PM me: Can it?
5:10:54 PM me: How will it know what details to grab?
5:11:15 PM Nick Liu: StandardDB knows the table structure automatically
5:11:25 PM Nick Liu: It’s smart.
5:11:28 PM me: Yes but I don’t really care about obscure details
5:11:32 PM me: For example
5:11:41 PM me: I don’t care in most cases if the user is subscribed to a certain type of email
5:11:56 PM me: I don’t care what order they choose to display private messages in
5:12:03 PM me: Those are all table fields
5:12:16 PM me: I shouldn’t see their password – that’s a security breach
5:12:45 PM me: What about failed login attempt counter?
5:12:52 PM me: Is that really important?
5:13:01 PM me: The other thing is, some fields will be long and others short
5:13:19 PM me: Your StandardDB would have to deal with that (which could be done but wouldn’t be simple)
5:13:30 PM me: It’s much easier to specify once for each object
5:13:39 PM me: These are the important fields and this is what output should look like
5:14:08 PM me: Even a really smart StandardDB I think would always encounter counter-examples
5:14:21 PM Nick Liu: You would then… specify the fields you want to display
5:14:31 PM me: Yeah okay
5:14:40 PM me: What if I want a break between some fields
5:14:45 PM Nick Liu: Class::getProfile(array(“username”, “email”));
5:14:46 PM me: Say some are contact, and some are more basic
5:15:22 PM me: What about adding headers
5:15:32 PM me: What about linked fields
5:15:37 PM me: For example on a user profile
5:15:42 PM me: I might want the name of their advisor
5:15:46 PM me: Which is a separate database
5:15:52 PM me: The ID number is not very helpful
5:16:04 PM me: I’d also like to make it a link to their profile
5:16:06 PM Nick Liu: That’s insanely messy…
5:16:20 PM me: Well with a getProfile() you can just tell it what to return
5:16:25 PM Nick Liu: Of course you can use my invention of Search Adaptations, but it’s still messy.
5:16:28 PM me: Here’s the HTML code to return
5:16:41 PM me: These are the important fields
5:16:45 PM me: This is the format
5:16:47 PM me: These are the titles
5:16:49 PM me: Breaks
5:16:53 PM me: Whatever you want to put
5:16:56 PM me: As long as it’s HTML
5:17:05 PM me: You can call any other helper methods in this class or another
5:17:14 PM Nick Liu: >,,getAdvisor()->getName()
5:17:30 PM me: It’s not getting where you want it to go no
5:17:42 PM me: You’re not making progress no
5:18:10 PM me: However, I think I’ve introduced at least some complications with your version 5 and the way you’ve implemented it
5:18:26 PM Nick Liu: Heh heh… No. 😐
5:18:31 PM me: No?
5:18:40 PM me: Okay then you’re just not listening
5:18:58 PM Nick Liu: **sighs**
5:19:00 PM Nick Liu: Forget it.
5:19:16 PM me: What’s more important to you? That we use your code or that the end code is the best possible?
5:20:02 PM me: You just given up?
5:20:12 PM Nick Liu: Given up in debating with you
5:20:23 PM me: Well what did you want me to do?
5:20:47 PM me: I already said you can have the whole host on a .net and I’ll go run another on the .com – you didn’t like that
5:20:55 PM me: It’d be all your code then
5:21:04 PM me: You could completely control it all and do it however you wanted
5:21:07 PM Nick Liu: 1. You should go back to IsMyWebsite 3.0 ONLY BECAUSE IT WORKS BETTER. 2. You shouldn’t question IsMyWebsite 5.0 because we know exactly what we’re doing.
5:21:36 PM me: I can’t go back without losing data
5:21:43 PM Nick Liu: What data?
5:21:51 PM me: There are a number of new fields added to the database
5:21:58 PM me: Entire new tables
5:22:05 PM me: Entire systems
5:22:42 PM me: It’s just as bad to do that as to use your 5.0
5:22:53 PM me: Even if the end result works better
5:22:54 PM Nick Liu: Okay.
5:23:00 PM Nick Liu: Suit yourself. I’m going to eat dinner.

On the plus side, I did get a start to the developers blog, which should be very useful in training the new developers once they are found (fingers crossed they come forward).

Current Status Of Certain Systems May 11, 2011

Posted by ismywebsite in general.

Here can help explain why all the problems of right now have occurred. My conclusion is simply that if a solid development team is not found, this site is likely to die faster than I could build anything.

Aside from the persistent lack of my time, the support problem is due to two main reasons:
1) The tools to effectively provide support do not exist, or are slow to use. These include such features as a website troubleshooter, tools to quickly manage accounts, tools to search through accounts, tools to organize queries (for example a ticket system, which as I said initially is not a priority over other features being as the forum solves 90% of the functionality already, but for some reason my words are always twisted to being that I disagree with a ticket system) etc… When dealing with a high volume of support, and limited time, every second counts. As we all know, version 5 launched 7 days ago with all these tools ready to be used.
2) The tools to allow others to participate in the support providing process do not exist. Permissions are all or nothing. There’s no way to give anyone permissions other than to hard code them manually which would make it near impossible to actually launch the permissions system later on. (Well, at the best case it would be minimal downtime, but for the amount of planning to get there, we might as well finish the permissions system).

There isn’t any. That’s the main problem.

It isn’t very. Although most of the acceptance functionality is finished, the permissions system still disallows anyone to properly process and accept those sites. My opinion is that accepting the clients onto a platform with so many other problems is wasting my time, and the clients.

What can I say? I can’t even see the total economic overview of the credit system, let alone start to look for suspicious patterns. Even if I knew all the problems, there’s no way to tag them as such and get them resolved. Right now, the entire class to process a list of transactions disappeared entirely (before I blocked the developers) so that’s great.

As for websites, with no abuse team, and absolutely zero tools available to them, well that’s no surprise.

No advisor system. Nobody reaches out to clients. Instead we are fighting to even answer clients, and losing horribly.

I hope nobody finds this host at the moment.

If you can develop, with the requirements I specified in the other post, then I need your help. If you want paid hosting (unlimited) for the rate I said, you can order that. Otherwise, please seek shelter at the nearest exit and keep your eyes on your email for when is a good time to come back.

Status Of Certain Nodes May 11, 2011

Posted by ismywebsite in general.
add a comment

Node 3 is being moved to a new datacenter, which means some momentary downtime.

Node 7 is being discontinued. It’s not because they don’t provide backups, but because of falsely advertising they did, then falsely saying they could at any request. Due to not having a solid development team able to build the backup system, and this is the second time all the websites on this node got maliciously removed (the attacker did not target any other nodes this time), there’s no easy solution. We have enough other servers at the moment that we don’t need Node 7. The attacker is believe to be known. It’s believed he attacked because he didn’t get his free domains right away.

Moving Forward May 9, 2011

Posted by ismywebsite in general.

Rather than keep waiting for a Version 5 that may never arrive, may well arrive with less than what already exists, and may well be something completely unlike any versions past or present, I have decided to take things into my own hands. In simpler language, I am back.

I’m not surprised by how small the community has become. Without proper tools, tools which are easily within our grasp today, things have had no hope of moving forward. IsMyWebsite has already been rebuilt from the ground up. There’s no need to do so again.

Failing to inspire and properly motivate the past team is clearly a failure which I shall have to accept full responsibility for. There is hope one day the prevailing wind will change to one of cooperation. For now, I am assembling a new army:

This army must have a strong PHP background,
Be knowledgeable in the ways of English,
Communicate what they are doing,
Accept thy sacred coding standard, and
Be honourable to their promises.

These are my conditions. It may be I bring on nobody and so be it. This site will be built block by block, piece by piece, by whoever shall rise to the challenge.

My planned team will include:

  • 1) A Development Organizer, who must have a background on this hosting. Their projects will include:
    • Maintenance of the developer wiki. This will provide a reference for all other developers into each class, system, etc… The developer wiki will be accessible to all developers, but not the general public.
    • Helping to keep track and prioritize what needs to be done. This can be done as a page of the wiki, or using different software.
    • If a third party wiki is used, they are responsible to maintain all the staff accounts.
    • Help to train new developers and make sure they feel welcome into the team.
  • 2) A Volunteer Panel Project Manager, to help with the creation of our desperately needed volunteer panel and all the tools therein. The basics of the volunteer panel are already up and running. Your job is to fill in all the details of the volunteer panel, which include:
    • A system to define and modify departments.
    • A system to define and modify roles within each of those departments./li>
    • A system to define and modify what tools and menus each role has access to.
    • A system to assign people to roles. This needs to also do some set up of webmail, FTP (if necessary), and be flexible to add permissions for more systems in the future.
    • A system to display the menu based on the above permissions.
    • Full scale security to prevent people from modifying the database and granting themselves permissions. (Make it very very difficult.)
  • 3) A Security Expert, whose main job it is to verify and validate all the code, finding holes and enforcing set standards in all the code. This is very important.

Should you be interested to take up a post and help us make gains on the lost time, add my Skype handle:

On behalf of all affected by your decision, thank you.

Paid Hosting? May 5, 2011

Posted by ismywebsite in general.

I’ve had a lot of time to think and I’m very frustrated because I’m the only one willing to work for free. And even now I have to afford my schooling and save up for life. I love helping you all, and I’d rather offer a great service than do it for free. I just wanted to get the general thoughts on offering paid hosting under the .com, leaving the free as whatever version 5 the developers are working hard to release under the .net.

Pricing would be:
$0.01 for your first website for the first month. (Basically a free trial.)
$4.98 for each month after.

As a bonus for people with multiple websites, each additional website would be $1 cheaper, to a minimum of $0.38/mo (which makes you an unlimited reseller effectively). So:

$3.98/mo for the second website.
$2.98/mo for the third.
$1.98/mo for the fourth.
$0.98/mo for the fifth.
$0.38/mo for every additional website.

In addition, when you purchase hosting or pay your monthly bill, you get IsMyWebsite $. These are 10% of your bill. So if you paid $4.98, then you get $0.50 in IsMyWebsite $. You can spend these to save on or outright buy anything new like hosting, domains, or servers. Just a little bonus for your loyalty. 🙂

The .net would still remain open as free hosting, and Nick, John, Cassidy, and Brendan have done a great job developing it so you should be able to still get the same quality of hosting there. So far the people I’ve talked to have said they’d be all for my paid hosting (and in fact this was never really my idea to begin with). But what do you think?

IMW5 Now Accepting ALPHA Testers May 1, 2011

Posted by Brendan McNiff (cobrastrike) in development, general, innovation.

Please Note:

This is being posted on behalf of the IsMyWebsite 5 Development Team

We are now having an open call for a limited group of testers.
When applying to test, please email me at:   bmcniff [AT] ismywebsite [dot] com

Information to Include:

  1. Name
  2. IsMyWebsite Username
  3. Why you want to be a tester
Please keep in mind that all potential testers will be interviewed, and only a very limited number accepted.