Both had good good points, but I found this particularly interesting:
I’d like to believe that there is more to it. I’ve been told over and over that it is the networking at event like this which really matter. In addition, there are panels/discussions/sessions that also should be worth it. While Alec isn’t going to get much out of this (he knows this drill from more angles then most), others might get some good knowledge out of the sessions, find somebody to link up with, etc.
I’ll be perfectly frank; I don’t much care for the idea of pitching investors. True I’ll need to do it eventually but personally, the notion of approaching a giant firm/company controlling millions of dollars examining everything that I tell them scares the words right out of me - not to mention turns me eleven shades of red.
Now, I’ve never approached investors, never even met one. Because of this, the investors I envision in my head are the adult version of the scary monster I imagined as a kid, with a gaping maw ready to swallow me whole.
Events like the Canadian Innovation Exchange and Founders and Funders are events I’d go to just to network. Even if nothing comes of it, it gives me a chance to communicate with both scary-investor-folk and would-be founders that are probably as scared as I. An opportunity to ask questions and puff my chest out and announce my presence in the space.
However, I maintain, let’s set up similar events in Calgary, hmmm?
…now if I can just get the courage to pick up the phone and call some of the folks Rick mentioned.
Recently I was working on a project that required the ability to define custom meta-data; this included categories and products, but also included a pre-determined list of countries and cities, etc.
Unfortunately, this hasn’t been tested on the latest version of the Zend Framework so it’s likely you’ll need to update your code accordingly.
I’ll skip the creation of fields and get right into the editing; I assume you’ve already added an index action and view. Our purpose is to effectively manage and modify field options, provide the ability to sort, edit and delete them, while preserving data related to the individual fields. For clarity, I will not use the view helpers for Form Elements.
Create your form and save it into your view, in my case edit-fields.php. I’ll leave it up to you to style and set form actions etc.
Then, pre-pend your javascript:
Now, before we get ahead of ourselves and worry about finding the fields, let’s the information and fields themselves - edit editFieldsAction() in your controller with the following:
Now let’s create our factory, in my case it’s MyFactory.php.
MyDomainObject::FetchCategory() validates that the requested categoryId exists. Then, the values assigned to that category. We could use $record->fetchValues() from within the rowClass instead of $obj->fetchValues($record->id), but it would more than likely just be an alias back to the factory.
Now, let’s open edit-fields.php again and add the following PHP between the UL.
An improvement to this would be to add an observer to all hyperlinks identified by class=”red”, but for simplicity, let’s leave that out. Now, our view should look something like this:
Assuming everything works, what should happen now is the list should pre-populate with previously created configuration options, we should be able to add, edit and delete those, and $_POST will override $this->options. Let’s start saving!
Edit editFieldsAction() to add some new functionality:
Now, back inside MyFactory:
It’s extra important that you pay attention to the usage of “ON DUPLICATE KEY UPDATE” - this is why we don’t have to do any fancy dancing. Additionally, we find the difference from $postArray versus what exists in the database to ensure that we delete anything that the user doesn’t want any more.
Additional steps might include the deletion of our user data when a config_value is deleted, either modifying the code itself or using the database.
A tool for defining, using and improving business processes.
Excited, I went through the activation process and got in. Standard interface, standard colors, and no improvement from every other Web 2.0 startup out there. In fact, I think it is worse.
Well. I have to say I haven’t used it for 5 minutes before I started looking for a Delete Account button (Which does not exist, that I’ve found). Harsh, but the truth.
Instant Deadpool for me. Sorry guys, there’s so much to work on. I respect Launch Early. I respect the concept of Beta. But this is atrocious.
Good luck in the future Skemma. I hope I can be proved wrong.
Recently I’ve had to deal with converting user uploaded video files to flv format. Up until today my initial experiments were unsuccessful.
First, I started with the project FFmpeg. In the beginning it looked promising but rapidly fell short. It wasn’t as platform agnostic as I would prefer (getting it to install my Wamp environment was a pain) and there were a couple outright show stoppers.
For instance, I wanted to grab the dimensions and length of a video file. Ordinarily this would be achievable by parsing the return value of a shell_exec, like so.
Unfortunately, it returns null. Huh. Fancy that.
Now, this isn’t to say that FFmpeg isn’t a fantastic library, and the existance of FFmpeg-php is a major bonus in my books, but the barrier to entry is huge on this one.
Next up was Carbon Coder. Let’s ignore for a moment that there’s a $5,000 price tag attached to it. CC had a free trial which I immediately wanted to try out.
Please note that the Carbon Coder Free Trial utilizes a USB security device that must be shipped in addition to the software (i.e., the Free Trial is not a download).
Well, that sucks.
Finally, I discovered the Flix Engine by On2. During Windows development I can use COM objects (easily accessible via PHP), and on Linux I can use PHP methods and objects I haven’t quite delved into yet.
A couple trials were immediately successful. I find myself overjoyed.
If you can swallow the price, I definitely recommend trying this out.
http://www.456bereastreet.com/archive/200708/microformats_book_review/
This is a great read; I’ve used Microformats in my applications and I think they are invaluable. The comments are especially useful in getting other people’s opinions.
http://yuiblog.com/blog/2007/08/13/rte-notes/
YUI looks great for simple rich text editing, haven’t tried it out yet since the YUI release. This gives me a good idea of what to expect.
Over the weekend I let the YCombinator Demo Day simmer, then planned on getting all the reactions. Sadly, I didn’t hear much about the demo days. If anyone has any links from the blogosphere (besides YCombinator news) let me know!
Floccinaucinihilipilification is the act or habit of estimating or describing something as worthless, or making something to be worthless by deprecation.
Some words we might use to describe the longest non-technical word in the English language:
What contributes to a project/startup dying? Is there a single catastrophic moment when the founders realize that it’s going nowhere, some kind of breaking point? I wonder what the guys labeled as ‘Defunct’ in the list of companies by YCombinator would say. Something like:
Not enough market visibility
Not enough market interest
Not enough money
Not enough need
” founder drive or ambition
You notice the trend here don’t you? Generally when it comes to failed startups, I hear those involved cite all sorts of different answers, all preceded by the same thing… Not enough.
Unfortunately, it generally tends to be true, not a simple matter of the founders’ incompetence. Oft-times you’ll hear critics examine a failure and proudlyloudly shriek the cause like they had insider information. Trouble with the internet; everyone is an expert.
One can have an Einstein equivalent idea and execute it perfectly, still to have it fail and come crashing down upon you (and your wallet… and your bank account. Credit Card. Marriage. Et cetera.).
You can’t force a user to enjoy your business application. They see a need for it, or they don’t. Likewise with Venture Capital. If a VC isn’t interested, that’s the cause of your lack of money, not the lack of VCs themselves.
That’s not a reason to give up so easily.
Let me say again:
That’s not a reason to give up so easily.
We all know the story. When the first dot com bubble exploded upon the markets, hundreds of thousands of companies were born. The internet was new and shiny and we all wanted a piece. But as with all new technologies, we first applied ourselves to solving existing problems. Those succeeded. Then some Venture Capitalists in their infinite wisdom, put unrealistic expectations on new applications that didn’t exactly make sense, solve any problems, were just… there. Those crashed. And burned. Millions were lost, lives were ruined. All around bad mojo.
There are lessons we can learn however. Some companies that went belly up a decade ago were reborn by others, adapted for ten years of change, and a success.
An idea can die, but it can also be reborn. Put a new spin on it. Re-evaluate reviews, criticisms and your gut feeling. Change direction. Change markets. Reinvent your idea from the ground up.
A chat application that went belly up could be the next Google Talk. Or an IM client in a Facebook app. Or used to provide a log for internal corporate discussions.
At risk of starting a holy war, I’ve noticed myself cringing every time I look at a block of code that isn’t formatted, or consists of slow functions… I decided to write a brief list of my pet peeves. Feel free to add!
Formatting
I prefer to use tabs (\t) rather than spaces to indent my code. Nested loops, decision blocks et cetera should all be indented with one tab per indent. Software such as the Zend Framework requires four spaces. This is completely up to you.
Optimization: Loops
One of the biggest issues I have with my fellow developers is not paying attention to optimization within loops. Consider, for instance, this example:
Always try to optimize your loops if operations are going on at the comparing part, since this part is executed every time the loop is parsed through. For assignments a descriptive name should be chosen. A correct example might be:
Now, take it one step further:
This is a minor detail, but pre-decrement (and increment) operators are faster than post-decrement (and increment). Post requires the compiler to create a duplicate of the variable and copy the updated value back at the end, while a pre-operation can be done in-place immediately.
Optimization: in_array();
Avoid using in_array() on huge arrays. Make an effort not place them into loops, especially if the array being evaluated consists of more than 30 or so entries. in_array() can be very CPU intensive. Instead, try using isset() on the arrays keys instead. A call to isset($myArray[$var]) is a lot faster than in_array($var, array_keys($myArray)).
Space your tokens
I loathe trying to sift through code I can’t read; it should read like the English language (yaknow, top to bottom, left to right?) Always leave one space between the tokens. Don’t put spaces just after an opening bracket or before a closing bracket. Don’t put spaces just before a comma or a semicolon. Again, just my personal preference, but I’m used to browbeating my subordinates. It’s the only way they know me as the Omnipotent Dark Lord.
Operator precedence
There is an exact precedence to all the operators in PHP, but I don’t recommend trying to guess them all. Use brackets to force the precedence of an comparison or equation so you know what it does.
Ternary Operators
Try not to sacrifice readability by saving yourself a few keystrokes. Ternary operators should generally be used for comparison, not complex logic.
Code Formating: If/Else
Braces must always be used. Braces always go on their own line. The closing brace should also always be at the same column as the corresponding opening brace.
Switch Statements
Switch statements are extremely useful, but can get a fair bit long. Akin to in-line braces, do not indent breaks.
In Closing…
These are just my personal opinions, based on my own ideologies. Everyone has their own preference on how code should look, but I do recommend paying special attention to the optimization tips.
Suggestions, comments and death threats always welcome!