Unfortunately, I think you can only talk about consciousness in the Neuroscience world if you have a Nobel prize. However, I think the argument still stands that it's a reasonable assumption that your entire conscious facility derives from the brain. Unless you want to make an argument for a soul, then it's fair to assume neurons and glial cells are the responsible parties.
Do we know for certain that quantum effects within neurons don't contribute to consciousness? No, but the most parsimonious answer would likely be that that's not the case. We have neither evidence nor reason to require such a mechanism to exist. What do neurons lack that cannot account for consciousness? If you can answer that, then I would allow the possibility of some other force in effect.
There are plenty of Neuroscientists who study parts of neurons, so it's not quite atomic, but overall you are right. If you take a patch of a neuron (separate it out from the rest of the cell) and record from it with an electrode, you can actually see random fluctuations in voltage that are unitary in size (that is, the voltage will jump in set units). What you are observing is the channels that conduct current, made up of proteins that span the membrane, opening and closing. These fluctuations are actually caused by random events in the dish. However, these fluctuations stop if you look at the same channels in an intact cell. What happens is the membrane of the cell helps to average out all of these random fluctuations. Thus, biology is relatively good at dealing with the randomness of Nature, and is unlikely to be affected by quantum fluctuations.
Hibernate is a pretty good product. It has nice features that allows you to abstract tables into OOP representation. Joins can be specified optionally on column values. And while the XML can be hard to parse, it now allows for annotations to be done in the Java code itself.
That said, when Hibernate fails, it can often be hard to figure out why. It's error messages can be hard to parse, and difficult to trace where it originates. Also, I've definitely come across places where hacks had to be implemented into object relationships in order to get cascades to work properly.
If Hibernate has any really big issues, is that it probably promises to do more than it actually can. But with that said, if you need Hibernate to do things outside of its general scope, you probably don't want to use SQL in the first place.
Instead of placing all your requirements on a single product, it might be worth figuring out how each dataset can be stored most optimally. If you're doing a lot of key-value storage, you can store large datasets with MemCached, and write to disk.
If you need to do relational queries on some of that data, you can create a SQL representation that points to the data you want. Also SleepyCat DB might be worth checking out.
Apple has jumped in on the fun in this regard, by making key-value bindings a central part of Cocoa. Again, there are no silver bullets -- use the best tool for the job as always..
I've never used.net, but I'm surprised that you would lump Cocoa, Carbon, and Java all together.
Carbon is a collection of libraries written in C for creating apps on the mac. It's often used when there is either no equivalent Objective-C library present, or Objective-C is not wanted.
While I'm currently using Java at work, I'm not a huge fan of it. I've never considered it particularly innovative, and would take C++ over it for most projects. If I need a dynamic language or rapid prototyping, then Python is a nice language. Because it's relatively easy to mix C++ with Python (e.g. boost::python), it makes optimizing code easy.
The places where Java is really supposed to shine (i.e. cross-platformability) it does only mediocrely. Both AWT and Swing are awful to use, and don't provide for good interfaces.
Even though it's an older language, I would say Objective-C is innovative and lends itself very well to windowing systems (especially for features like double-dispatching). Like Java and.net it also has introspection (technically so does C++, but you kinda have to roll your own).
Apple has also added some nice features to Objective-C, like properties which you can synthesize. This has the added bonus that the setters and getters are automatically generated for you. The only other language that I know (I'm sure there are others) that allows you anything near to that is Python (overload the __get__ and __set__ methods). Oh, and it also has garbage collection if you're into that sort of thing.
One feature that I really like about Cocoa is the Interface builder. No code is generated (unlike VisualC++.. or at least the last time I used it), but rather serialized objects. So you can write you object code, insert an instance of that object into IB, and then overload awakeFromNIB for when it gets deserialized. Which frees you from all the '// Do not change' comments throughout your code.
I'm not big on the M$ love. I'm a mac/linux proponent. However, I think that M$'s current problem with a really horrible API (I'm saying this having programmed for win32, GTK, QT, WX, and Cocoa) isn't an easy to solve problem.
They could pull an Apple, and completely redo their windowing system. Apple benefited from using NeXT's system, which was well thought out, uses a language well suited to windowing systems (objective-c), and could be altered based on previous user experience.
However, in doing so they would lose all compatibility they current have. Keeping compatibility, even if it creates a developer's nightmare, is in the end what keeps them on top of the market.
That is not to say it's not impossible for them to do so. Apple did provide a virtual machine to run old OS9 software with the first releases of OS X. However, since both Mac and Linux machines also have the same options (currently running Parallels on my machine), it would still take the clear advantage M$ has in the market away.
It's not clear whether their bad API spells the eventual doom of the company. The more pragmatic developers will still value making products that more people can use over writing nice looking code. Additionally, wrapper libraries, such as WxWidgets or Qt can help hide much of the ugliness.
Unfortunately the article does not seem to address the fact that there are other possible causes. Many environmental factors can affect DNA over time. For example, genes commonly have two attributes associated with them: penetrance and expression. Just because you have a gene doesn't mean it will necessarily be transcribed (i.e. does it get expressed?). Both internal and external cues can help determine this event occurring. Even when the gene does get expressed, how many copies get made can vary (penetrance).
These are the two of the most classic examples of differences between genes, but there are other mechanisms that exist. For retrograde viruses can insert themselves into genes.
Not to say their theory of CNV is wrong, just that other mechanisms have already been known.
Makes me wonder if you could sue Microsoft for hacking into your computer. Legally, what would give them the right to hack your computer versus the script kiddies? Maybe the can put a clause in their license agreement allowing them to hack-away..
It would be nice if someone could do something about the spam-bots. I don't think anyone would mind a worm infecting a zombie. If you can't secure your own computer, maybe anyone on the net should have the right of attack? Is there a sure-way to identify a computer then? Based off its behavior, or maybe there are finger-printing methods to identify a hacked computer from the outside?
There was a cafe nearby my old school in NYC which I used for doing a large part of my thesis writing. They started off having free wi-fi, but I think got sick of the freeloading (lots of students in the area), and so switched to an hourly-ticket system. Unfortunately whoever implemented the system did a very bad job of it. The problems ranged from making the network really unstable to having to rely on a printer to get your ticket (it's on a frigg'n network.. make a renewal webpage!), to the amount of time allotted (1 hour is not nearly long enough -- especially if someone comes up and starts talking to you).
Which is not to say Starbucks will be doomed. Only that past experience with other systems (esp. counting every hotel and airport I've been to) has shown very few businesses know how to do these things right.
It is *really* nice they're doing away with the pay-system for already paying customers. The amount T-Mobile was charging for access was crazy, and in the end I suspect all Starbucks cares about is getting more people into their store over-paying for the coffee. I have the option of working in Cafes, only I require internet-access. Until now I've been to chea^H^H^H^H thrifty to pay the additional cost (especially since I'm already paying for it at home). I'm much more likely now to spend some quality time in their stores.
That's actually the solution I use for my illegal torrenting. It's just I don't consider that a long-term solution to the problem. I acknowledge that someone needs to get paid for the content, and I don't mind contributing (either ad-watching or money-wise). The problems are:
1. I don't want to own most TV shows, so the $2/show for iTunes doesn't fit the bill (if I can rent movies, why can't I subscribe to *one* TV show?)
2. Cable is more money than I want to spend, especially since: (a) most of the content I don't care about (there are at most 4-6 shows I actually care about, so I'm paying for a lot of content I won't watch), (b) I have to spend even more money for a DVR so I can watch the shows that are actually convenient for me, (c) even more extra fees for anything that's not on basic cable.
3. As stated above, I can netflix most TV series, but then I'm always season behind. Some shows (such as Daily Show or Colbert Report) this simply isn't an option.
4. I think that's about it. Which to me seems extremely short-sighted for the TV companies. However, since I suspect I'm in the minority here, I don't suspect things will change anytime soon.
I'd like to first state I don't have cable TV and I don't have an antenna either (which doesn't do much good in NYC anyways). I still watch TV through both legal (web sites) and illegal (torrents). I generally don't mind the ads, as long as they don't interrupt the show too much (though both ads that come up in the *middle* of a scene are really fucking annoying, as well as watching the *exact* same ad repeatedly.. I'm pretty sure there's a way of advertising without being a complete asshole..).
I also try the various alternatives out there. I do Netflix, so I can watch low-quality on-demand as well as old series over DVD. I use Joost, though their interface is really really (extremely) horrible, and their content is slightly better than that. For reasons I'm sure make sense to someone else, each 'channel' can only maintain a small number of shows, so you won't be able to watch an entire series of a television show, and only a small percent of that channel is watchable. Which means that while they have the opportunity to create a system where you can actually watch exactly what you want, when you want, trumping TV once and for all, they don't. They completely and miserably fail. Did Also, did I mention how horrible the interface is?
Someone else mentioned Miro. It's a fine idea. Only, I can't find any content I really care to watch, especially as most of it are snippets from full programs, and have a total length of 5 minutes. I know the 5 minute clip is supposed to be the next revolution, but I'm sorry, it really isn't. Sure, I watch the quick YouTube clip every now and then, but it doesn't replace a full-length TV show. Additionally, for actual revenue to occur, an add would have to be added, which would likely double the length of the clip, and make you watch ads for half of your viewing experience.
Do we have the technology for alternatives? Definitely. Is there a method of revenue currently in place for it? Probably.. companies are already advertising with some of these companies (e.g. Joost, NBC, ABC, Fox, etc.), though exactly how to manage is still being worked through (again, putting an ad mid-scene does not work). What's holding things up? Most likely things like stupidity, licensing issues (amount of content you can host), and lack of momentum (at least until the strike, people's appetites were sated enough).
Well, INDBE, but MapReduce seems like a pretty cool idea (even it is old [which in my books does not equate bad]). A similar argument could be made against SQL -- it's not appropriate to all solutions. It's used for most nowadays, in part because it's the simplest to use, but that doesn't make it necessarily better. It (of course) depends on what data you want to represent.
Even more importantly, you can create schemas with MapReduce by how you write your Map/Reduce functions. This is a matter of the datafunction exchange (all data can be represented as a function, likewise all functions can be represented as data). I admit ignorance to how this MapReduce system works, but I would be surprised if you couldn't get a relational database back out.
The advantage is you get with MapReduce is that you aren't necessarily tied to a single representation of data. Especially for companies like Google, which may want to create dynamic groups of data, this could be a big win. Again, this is all speculative, as I have very little experience with these systems.
Yes, but as far as I know, RoR is the main package people use for Ruby, versus Python which has 5-6 packages that I know of. Part of the reason for this is that Ruby's language has some unique features that make it favorable to RoR's style (though projects like Django seem to pull it off okay..?). Not to mention PHP has Cake, which is also supposed to model itself after RoR.
So, I was assuming that most readers would be smart enough to figure out I meant the standard way you do things in PHP or Python, or whatever language (you may also note ModPython is not a language, it's a library, though it doesn't actually do much for HTML generation). There's really no reason to be rude, and it makes you look a bit stupid and a bit of an ass.
As for the general apps, that's the info I'd like to know, but haven't been able to find much info on. Almost all demos I've seen build off of a database. There's plenty of sites I'm interested in making that actually have no database whatsoever. Because that's RoR's, I would assume it's not going to help me much.
By going back, I didn't mean revision control. I meant changes in the structure of the code (you might have heard of refactoring?) or even the database. Previous experience with generated code (thank you Visual-C++) has made me weary about the initial parameters set when creating a project/object/etc. that results in code.
I've actually done a minimal amount of obsessing over rails. I've most just ignored it, but in part because besides wrapping a DB nicely in an interface, I'm not entirely sure what it does well. Not that wrapping DB isn't important for web pages, it's just there's a lot more to programming than that.
Re:still waiting to use it...
on
Rails May Not Suck
·
· Score: 2, Interesting
As long as you don't change the DB too much. Obviously since you are creating a class representation of the database, how much gets altered will certainly muck things up.
It seems that RoR makes heavy reliance on this relationship, which is where it gets it power, has a literalism that disallows abstraction to easily take place. I might be able to abstract the data well enough that it doesn't matter how its held in the SQL DB in a different language/framework/library. However, I'm going to assume that RoR isn't meant for that type of coding.
I've just started to read up on Cocoa's Core Data, which has some similarities. Though it has a GUI in order to map the relationships. There's definitely power in relationship mapping for data. Going back to abstractions, it would be interesting to see a more general approach taken with Ruby that would do more than just SQL databases (unless it does, and I'm just missing something).
I've mostly liked RoR, from the small amount I've used it. I'd use it more, only I keep starting projects with it, realize it's probably not the right tool, and then switch to something else.
Part of the problem might very well come from the fact that I have very little experience with it (catch-22?). The thing is, from what I can tell, it's really specialized. I never had this problem with PHP or ModPython.
The article itself is a bit annoying, as it's about as vague as one can get. For us unenlightened, *when* is the proper time to use RoR? I get it's DB driven. So if you have to write a store, library, or/., you're good. But how does it fair for more general apps?
One of the big things that worries me is that there are a lot of files generated. That scares me. What if I made a mistake at the beginning? Is it easy to go back? Do I need to start from scratch?
I'm sure there is documentation somewhere that mentions that, only I haven't found it yet. I've come across plenty of 'how to start' articles, but not many that really get at the architecture design as a whole. Though, this seems fairly status quo for web-development.
As other posters have noted, many of these complaints/thoughts come from RoR being a framework. I wonder if it would be possible to re-create RoR, but in a more library-form. User has to do more work (no generated files), but more flexibility in the long run?
Hmm.. let's see, you can hook up an XBox to TV. At least on the XBox you can download movies and TV shows and watch them. You can route your computer's contents to your TV with products such as the AppleTV (and its competitors). At least in NYC, many people don't have room for a full blown TV, so the computer monitor will often double as the TV. Indeed, while I do own a TV, I still watch a lot of TV shows on it (e.g. The Daily Show and Heroes).
Perhaps your in your personal life there is a clear separation, but I don't think it's safe to assume that holds true for everyone. The difference between the TV and computer are diminishing, and many technology companies are working actively to make that difference even smaller.
Besides which, think about it, the people who download the digital content are watching movies on their computer (which is against your point). They could have instead bought the DVD which would also play on any computer. Thus the two are indeed in competition. Name an instance where someone would both do the digital download and buy the DVD.
In NYC at Blockbusters its $5 for 2-5 days, depending on how new the movie is (if I remember it correctly.. I generally avoid them, so it's been a while). Which works out to between $1-$2.50. For most rentals you don't actually need it for that period of time, rather that time is usually factored in for how long it might take you to return the movie.
Assuming the companies get some say in the pricing, they are likely going to want to continue to get the same amount of income from the digital rentals. It's probably true that they save a lot of money by not needing physical stores, employees at each branch, etc., the companies will likely see it as a chance to make more money anyways.
The $2/day is therefore a compromise. If the download speeds are fast enough, you are most likely going to return the video the same day you rented it, and still stay below $5. On the off chance you want the movie for longer, after 3 days you are only slightly above Blockbuster's price, and still don't have to worry about late-fees.
The big question is how they decide the timing. IIRC, the XBox has a $4-5 charge for a several day rental, copying how it's currently done in real life. This doesn't make a lot of sense to me. It's digital, there's no reason to necessarily copy real life. A per-day-charge makes more sense in how movies are actually used. Additionally, the movie expires after that time, so if you never touch it, you are still charged (they can detect if you watch it or not, so that's obnoxious)
An alternative would to be go with a Netflix approach, which I prefer the most. It's good for them, as they get a guaranteed monthly income from you, and you get to have up to N movies out at a time. Watch a couple while you are downloading others in the background. When you're done with it, it gets deleted, and you have more slots open. With Netflix, for $10.00/month (or close to it) you get two movies at a time. So you'd always have one watchable movie, and one movie you could be downloading.
Someone else pointed out that part of the issue is that Walmart sells DVDs already, and thus they were competing with themselves. I suspect they started the digital distribution because they realized long-term DVDs are dead. Even if a winner is ever found for Blu-Ray or HD-DVD, it might be too late now. Not that people won't buy them, but for most movies digital distribution seems likely to become the preferred method.
However, short-term, DVD is still king. So do they cut into their current sales for an uncertain future (can they really win against the other big-players?.. it's certainly out of their area of expertise), or do they go ahead with their current sales with the knowledge that they'll lose out later on? One thing to consider, their primary market is not exactly tech-savvy, and therefore will likely continue with DVDs for the next 10-15 years.
Another possible explanation, is perhaps they realized getting into variable-pricing was a mistake. If history gives us any lessons, the media companies are greedy bastards. They don't seem to give much thought into long-term planning. This is one case where the intelligence of Apple really comes through. They realized that unless they could control the prices, companies would try to charge more money than the physical media costs. I suspect after some grace period, in order to save face, NBC will come back to iTunes.
I won't argue against the anti-DRMists. I'm generally not a fan of DRM, but have also generally gone with the lesser of the evil. I don't buy CDs, because I don't have the room to store them, I don't like destroying the environment, and I don't use CD players anymore. IMHO Apple's DRM tends to be less evil. In part because Apple doesn't really like DRM -- they haven't yet gone out of their way to really screw you over, and generally ignore the hacks around their system. Sometimes they'll fight back, but so far have given in to the end (showing signs of intelligence).
The thing is, I like renting movies. There are plenty of crappy movies I only need to see once. Providing some system that allows me to do that is a great benefit. It means I don't have to walk to the rental place. I can get the movies whenever I want, and I don't have to worry about DVDs that are overly scratched.
DRM is really the only conceivable way to do this. My main worries is that they'll restrict the rental in stupid ways. Like how long per DVD? Is the time based on when you watch it? If not, downloading a DVD is a time-consuming task, and some pre-planning will have to be involved.
I would think a much better system is to do something like Netflix. Forget about amount of time you have the movie, and instead just do number of movies you can have checked out. Also, if they make the rent time too short (and charge the same amount of money) it may in the end not be worth it. Another approach might be to do something like $2/day.
No, I'm suggest let the things that belong to the web be web, and the things that belong to apps be apps. For example, if a blog website would still produce the blog material as web pages. However, the editing of the blog would be done through a client that gets launched from the web page. There's no need to index the form pages.
Besides which, there are plenty of web pages out already that are difficulty to semanticize. The more we enforce the distinction between content and function the easier it is to parse the pages.
That's part of my beef -- instead of allowing for well used (and much loved) languages to compete for internetty apps, we're instead forced to use 'specialized' languages. I have the same gripe with Matlab, Mathematica, etc. (and thus welcome our Sage overlords).
Yes, I am talking about rich clients, but only because in the end that's mostly what AJAX + HTML is trying to emulate. For example, the ThinWire link that someone else gave is trying to provide the same controls of a rich client, but through a medium that wasn't really designed to do that.
I have great respect for the people who write those libraries -- they've managed to take AJAX to its full potential, but it doesn't strike me in the end as a particularly elegant or final solution.
The only real "internet-ready" "rich client" GUI that I know is Java. Possibly TK/Tcl. In theory someone could take either the Qt or GTK+ libraries (minus some licensing issues for Qt, and platformability issues with GTK+ [at least last time I checked]) and make something that could easily be sent as an internet-app. Unfortunately no one really has at this point. At least not to the level where it's really easy to develop and deploy and have work inter-mixed with web pages they might be launched from.
I think I used the modifier good too. If not, I apologize. I'd like it to be good.
As far as I can tell, Flash was never intended to do complex GUI things. It's only with the last release of Flash that it allowed a completely code-based GUI to be created (and not all of that crazy timeline editing). And even still, adding the controls, creating their handlers, etc. is horrible.
If the future is making Flash GUIs, I do not welcome the future.
I'm actually a big fan of both OOP and functional programming (e.g. I like both C++ and Scheme). I should also point out that C++ is and never has been a purely OOP language.. Bjarne Stroustrup has gone to great lengths to ensure this. While template hacking has its own issues, Boost actually provides a good deal of functional-programming functionality through use of templates.
I know there are some proponents of Javascript. Yes, it's nice that it provides things like closures. But I'm not a huge fan of the syntax of the language, nor have I ever felt it was feature complete (at least the libraries provided for the web). Flash makes much better use of javascript, but I think very few people would claim it's a great solution. People use it because there aren't many alternatives.
I'm a big Python advocate myself. Yes, the whitespace issue is really annoying, but once you get past that, it does a lot that other scripting languages don't. Oh, and here's the obligatory XKCD comic to prove my point:
I would be willing to try out ASP.Net, though I'm going to guess I can't actually develop for it since I own a Mac.
Also, more importantly, I don't actually want a solution that spits out more HTML. I don't want my GUI in a web browser. I want a real actual GUI on its own. Kinda like what Java can, only with a lot less Java (oh, and a much better designed GUI).
I think a large part of the people's opinion on AJAX depends on what they're doing. It's difficulty depends in part on the framework/libraries you use. For example, script.aculo.us and RoR hide many of the details for you. On the other hand, if you do outside of what they do well, the difficulty level quickly rises.
I think one sign of this difficulty is that just about all AJAX libraries do the exact same thing. The same basic special effects, field additions, etc. The fact that none of the libraries go beyond these, points to what's hard to do.
Javascript isn't a great language. It's not robust, and it's difficult to really do good architecture with libraries using it. HTML is a pretty decent method to mark up text, but wasn't meant originally to ever be interactive.
Tying together a hacked together language with HTML doesn't make for the greatest programming experience. Especially compared to any real GUI framework.
Maybe most people don't want/need a real GUI framework, and AJAX covers all the bases for them -- in which you're probably going to say you like AJAX.
However, I suspect if AJAX and HTML were really so great/powerful/easy, many people would have stopped using flash already. I have no love for flash, but it can do things much more easily/faster than AJAX can for many tasks (disliking both technologies I'm pretty non-biased here).
What I would love to see is a standard *real* GUI for the web that is non-language dependent (i.e. whatever scripting language you prefer you can use). I'd even use something like Jython with newer/better GUI libraries. But we really need something written from the ground up with GUI in mind.
First, I'd like to point out the post immediately following this is on the missing matter in the universe. Coincidence? Read the book.
Secondly, I would propose there are likely no great solutions to the problem. There are decent ones, but the difficulty you'll run into is that there will always be multiple satisfactory organization schemes that work. Which means if you really need things to be complete, you'll need duplicates of all your books.
I had a similar issue when I was in grad school, and was trying to figure out how to organize all the papers I read. The standard is to organize the papers by last author (i.e. whoever's lab the work was done in). However, this causes issues when someone starts their own lab. Sometimes name-order changes, and sometimes two labs will collaborate.
My final solution was to give up on trying to impose a physical organization, but rather keep an electronic database of everything. I then could keep folders of no more than N papers, each one added in chronological order it was added. The database would hold which folder the paper is placed in, and its index in the folder (i.e. the kth paper).
Finding any paper by hand is pretty futile, but within 5 seconds using the computer I can locate any paper I wish. Likewise, a similar strategy could be used for a bookshelf. You just need some method to demarcate ever Nth book.
For the database you can use the standard MySQL server (I unfortunately used XML, to which day I still regret). If you're into web pages, it's a pretty simple task to use something like RoR to make a quick interface for entering book information.
However, this is a bit unsatisfactory if you want to use a bar-code scanner. Personally, since I mostly use Macs these days, is I would write something quick using PyObjC. Programs such as Delicious Monster use the web cam to read in bar codes, but writing your own might be some work (not impossible, though), so buying a bar-code scanner is probably better option (whatever happened to the CueCats?)
I'm pretty sure I failed to properly answer the question, because this all requires a bunch of coding. However, it's a pretty decent project for any intermediate programmer. The XML solution is nice, as you can enter in the entries by hand, no complex interface required, but you also get no automation, and reading in large XML files can be slow at times.
Unfortunately, I think you can only talk about consciousness in the Neuroscience world if you have a Nobel prize. However, I think the argument still stands that it's a reasonable assumption that your entire conscious facility derives from the brain. Unless you want to make an argument for a soul, then it's fair to assume neurons and glial cells are the responsible parties.
Do we know for certain that quantum effects within neurons don't contribute to consciousness? No, but the most parsimonious answer would likely be that that's not the case. We have neither evidence nor reason to require such a mechanism to exist. What do neurons lack that cannot account for consciousness? If you can answer that, then I would allow the possibility of some other force in effect.
There are plenty of Neuroscientists who study parts of neurons, so it's not quite atomic, but overall you are right. If you take a patch of a neuron (separate it out from the rest of the cell) and record from it with an electrode, you can actually see random fluctuations in voltage that are unitary in size (that is, the voltage will jump in set units). What you are observing is the channels that conduct current, made up of proteins that span the membrane, opening and closing. These fluctuations are actually caused by random events in the dish. However, these fluctuations stop if you look at the same channels in an intact cell. What happens is the membrane of the cell helps to average out all of these random fluctuations. Thus, biology is relatively good at dealing with the randomness of Nature, and is unlikely to be affected by quantum fluctuations.
Hibernate is a pretty good product. It has nice features that allows you to abstract tables into OOP representation. Joins can be specified optionally on column values. And while the XML can be hard to parse, it now allows for annotations to be done in the Java code itself.
That said, when Hibernate fails, it can often be hard to figure out why. It's error messages can be hard to parse, and difficult to trace where it originates. Also, I've definitely come across places where hacks had to be implemented into object relationships in order to get cascades to work properly.
If Hibernate has any really big issues, is that it probably promises to do more than it actually can. But with that said, if you need Hibernate to do things outside of its general scope, you probably don't want to use SQL in the first place.
Instead of placing all your requirements on a single product, it might be worth figuring out how each dataset can be stored most optimally. If you're doing a lot of key-value storage, you can store large datasets with MemCached, and write to disk.
If you need to do relational queries on some of that data, you can create a SQL representation that points to the data you want. Also SleepyCat DB might be worth checking out.
Apple has jumped in on the fun in this regard, by making key-value bindings a central part of Cocoa. Again, there are no silver bullets -- use the best tool for the job as always..
I've never used .net, but I'm surprised that you would lump Cocoa, Carbon, and Java all together.
.net it also has introspection (technically so does C++, but you kinda have to roll your own).
.. or at least the last time I used it), but rather serialized objects. So you can write you object code, insert an instance of that object into IB, and then overload awakeFromNIB for when it gets deserialized. Which frees you from all the '// Do not change' comments throughout your code.
Carbon is a collection of libraries written in C for creating apps on the mac. It's often used when there is either no equivalent Objective-C library present, or Objective-C is not wanted.
While I'm currently using Java at work, I'm not a huge fan of it. I've never considered it particularly innovative, and would take C++ over it for most projects. If I need a dynamic language or rapid prototyping, then Python is a nice language. Because it's relatively easy to mix C++ with Python (e.g. boost::python), it makes optimizing code easy.
The places where Java is really supposed to shine (i.e. cross-platformability) it does only mediocrely. Both AWT and Swing are awful to use, and don't provide for good interfaces.
Even though it's an older language, I would say Objective-C is innovative and lends itself very well to windowing systems (especially for features like double-dispatching). Like Java and
Apple has also added some nice features to Objective-C, like properties which you can synthesize. This has the added bonus that the setters and getters are automatically generated for you. The only other language that I know (I'm sure there are others) that allows you anything near to that is Python (overload the __get__ and __set__ methods). Oh, and it also has garbage collection if you're into that sort of thing.
One feature that I really like about Cocoa is the Interface builder. No code is generated (unlike VisualC++
I'm not big on the M$ love. I'm a mac/linux proponent. However, I think that M$'s current problem with a really horrible API (I'm saying this having programmed for win32, GTK, QT, WX, and Cocoa) isn't an easy to solve problem.
They could pull an Apple, and completely redo their windowing system. Apple benefited from using NeXT's system, which was well thought out, uses a language well suited to windowing systems (objective-c), and could be altered based on previous user experience.
However, in doing so they would lose all compatibility they current have. Keeping compatibility, even if it creates a developer's nightmare, is in the end what keeps them on top of the market.
That is not to say it's not impossible for them to do so. Apple did provide a virtual machine to run old OS9 software with the first releases of OS X. However, since both Mac and Linux machines also have the same options (currently running Parallels on my machine), it would still take the clear advantage M$ has in the market away.
It's not clear whether their bad API spells the eventual doom of the company. The more pragmatic developers will still value making products that more people can use over writing nice looking code. Additionally, wrapper libraries, such as WxWidgets or Qt can help hide much of the ugliness.
This has strong implications on physics. Suppose time does tell, then the NSA decides to 'disappear' time. What then? Huh?
Unfortunately the article does not seem to address the fact that there are other possible causes. Many environmental factors can affect DNA over time. For example, genes commonly have two attributes associated with them: penetrance and expression. Just because you have a gene doesn't mean it will necessarily be transcribed (i.e. does it get expressed?). Both internal and external cues can help determine this event occurring. Even when the gene does get expressed, how many copies get made can vary (penetrance).
These are the two of the most classic examples of differences between genes, but there are other mechanisms that exist. For retrograde viruses can insert themselves into genes.
Not to say their theory of CNV is wrong, just that other mechanisms have already been known.
Makes me wonder if you could sue Microsoft for hacking into your computer. Legally, what would give them the right to hack your computer versus the script kiddies? Maybe the can put a clause in their license agreement allowing them to hack-away..
It would be nice if someone could do something about the spam-bots. I don't think anyone would mind a worm infecting a zombie. If you can't secure your own computer, maybe anyone on the net should have the right of attack? Is there a sure-way to identify a computer then? Based off its behavior, or maybe there are finger-printing methods to identify a hacked computer from the outside?
There was a cafe nearby my old school in NYC which I used for doing a large part of my thesis writing. They started off having free wi-fi, but I think got sick of the freeloading (lots of students in the area), and so switched to an hourly-ticket system. Unfortunately whoever implemented the system did a very bad job of it. The problems ranged from making the network really unstable to having to rely on a printer to get your ticket (it's on a frigg'n network .. make a renewal webpage!), to the amount of time allotted (1 hour is not nearly long enough -- especially if someone comes up and starts talking to you).
Which is not to say Starbucks will be doomed. Only that past experience with other systems (esp. counting every hotel and airport I've been to) has shown very few businesses know how to do these things right.
It is *really* nice they're doing away with the pay-system for already paying customers. The amount T-Mobile was charging for access was crazy, and in the end I suspect all Starbucks cares about is getting more people into their store over-paying for the coffee. I have the option of working in Cafes, only I require internet-access. Until now I've been to chea^H^H^H^H thrifty to pay the additional cost (especially since I'm already paying for it at home). I'm much more likely now to spend some quality time in their stores.
That's actually the solution I use for my illegal torrenting. It's just I don't consider that a long-term solution to the problem. I acknowledge that someone needs to get paid for the content, and I don't mind contributing (either ad-watching or money-wise). The problems are:
1. I don't want to own most TV shows, so the $2/show for iTunes doesn't fit the bill (if I can rent movies, why can't I subscribe to *one* TV show?)
2. Cable is more money than I want to spend, especially since: (a) most of the content I don't care about (there are at most 4-6 shows I actually care about, so I'm paying for a lot of content I won't watch), (b) I have to spend even more money for a DVR so I can watch the shows that are actually convenient for me, (c) even more extra fees for anything that's not on basic cable.
3. As stated above, I can netflix most TV series, but then I'm always season behind. Some shows (such as Daily Show or Colbert Report) this simply isn't an option.
4. I think that's about it. Which to me seems extremely short-sighted for the TV companies. However, since I suspect I'm in the minority here, I don't suspect things will change anytime soon.
I'd like to first state I don't have cable TV and I don't have an antenna either (which doesn't do much good in NYC anyways). I still watch TV through both legal (web sites) and illegal (torrents). I generally don't mind the ads, as long as they don't interrupt the show too much (though both ads that come up in the *middle* of a scene are really fucking annoying, as well as watching the *exact* same ad repeatedly .. I'm pretty sure there's a way of advertising without being a complete asshole..).
.. companies are already advertising with some of these companies (e.g. Joost, NBC, ABC, Fox, etc.), though exactly how to manage is still being worked through (again, putting an ad mid-scene does not work). What's holding things up? Most likely things like stupidity, licensing issues (amount of content you can host), and lack of momentum (at least until the strike, people's appetites were sated enough).
I also try the various alternatives out there. I do Netflix, so I can watch low-quality on-demand as well as old series over DVD. I use Joost, though their interface is really really (extremely) horrible, and their content is slightly better than that. For reasons I'm sure make sense to someone else, each 'channel' can only maintain a small number of shows, so you won't be able to watch an entire series of a television show, and only a small percent of that channel is watchable. Which means that while they have the opportunity to create a system where you can actually watch exactly what you want, when you want, trumping TV once and for all, they don't. They completely and miserably fail. Did Also, did I mention how horrible the interface is?
Someone else mentioned Miro. It's a fine idea. Only, I can't find any content I really care to watch, especially as most of it are snippets from full programs, and have a total length of 5 minutes. I know the 5 minute clip is supposed to be the next revolution, but I'm sorry, it really isn't. Sure, I watch the quick YouTube clip every now and then, but it doesn't replace a full-length TV show. Additionally, for actual revenue to occur, an add would have to be added, which would likely double the length of the clip, and make you watch ads for half of your viewing experience.
Do we have the technology for alternatives? Definitely. Is there a method of revenue currently in place for it? Probably
Well, INDBE, but MapReduce seems like a pretty cool idea (even it is old [which in my books does not equate bad]). A similar argument could be made against SQL -- it's not appropriate to all solutions. It's used for most nowadays, in part because it's the simplest to use, but that doesn't make it necessarily better. It (of course) depends on what data you want to represent.
Even more importantly, you can create schemas with MapReduce by how you write your Map/Reduce functions. This is a matter of the datafunction exchange (all data can be represented as a function, likewise all functions can be represented as data). I admit ignorance to how this MapReduce system works, but I would be surprised if you couldn't get a relational database back out.
The advantage is you get with MapReduce is that you aren't necessarily tied to a single representation of data. Especially for companies like Google, which may want to create dynamic groups of data, this could be a big win. Again, this is all speculative, as I have very little experience with these systems.
Yes, but as far as I know, RoR is the main package people use for Ruby, versus Python which has 5-6 packages that I know of. Part of the reason for this is that Ruby's language has some unique features that make it favorable to RoR's style (though projects like Django seem to pull it off okay..?). Not to mention PHP has Cake, which is also supposed to model itself after RoR. So, I was assuming that most readers would be smart enough to figure out I meant the standard way you do things in PHP or Python, or whatever language (you may also note ModPython is not a language, it's a library, though it doesn't actually do much for HTML generation). There's really no reason to be rude, and it makes you look a bit stupid and a bit of an ass. As for the general apps, that's the info I'd like to know, but haven't been able to find much info on. Almost all demos I've seen build off of a database. There's plenty of sites I'm interested in making that actually have no database whatsoever. Because that's RoR's, I would assume it's not going to help me much. By going back, I didn't mean revision control. I meant changes in the structure of the code (you might have heard of refactoring?) or even the database. Previous experience with generated code (thank you Visual-C++) has made me weary about the initial parameters set when creating a project/object/etc. that results in code. I've actually done a minimal amount of obsessing over rails. I've most just ignored it, but in part because besides wrapping a DB nicely in an interface, I'm not entirely sure what it does well. Not that wrapping DB isn't important for web pages, it's just there's a lot more to programming than that.
As long as you don't change the DB too much. Obviously since you are creating a class representation of the database, how much gets altered will certainly muck things up.
It seems that RoR makes heavy reliance on this relationship, which is where it gets it power, has a literalism that disallows abstraction to easily take place. I might be able to abstract the data well enough that it doesn't matter how its held in the SQL DB in a different language/framework/library. However, I'm going to assume that RoR isn't meant for that type of coding.
I've just started to read up on Cocoa's Core Data, which has some similarities. Though it has a GUI in order to map the relationships. There's definitely power in relationship mapping for data. Going back to abstractions, it would be interesting to see a more general approach taken with Ruby that would do more than just SQL databases (unless it does, and I'm just missing something).
I've mostly liked RoR, from the small amount I've used it. I'd use it more, only I keep starting projects with it, realize it's probably not the right tool, and then switch to something else.
/., you're good. But how does it fair for more general apps?
Part of the problem might very well come from the fact that I have very little experience with it (catch-22?). The thing is, from what I can tell, it's really specialized. I never had this problem with PHP or ModPython.
The article itself is a bit annoying, as it's about as vague as one can get. For us unenlightened, *when* is the proper time to use RoR? I get it's DB driven. So if you have to write a store, library, or
One of the big things that worries me is that there are a lot of files generated. That scares me. What if I made a mistake at the beginning? Is it easy to go back? Do I need to start from scratch?
I'm sure there is documentation somewhere that mentions that, only I haven't found it yet. I've come across plenty of 'how to start' articles, but not many that really get at the architecture design as a whole. Though, this seems fairly status quo for web-development.
As other posters have noted, many of these complaints/thoughts come from RoR being a framework. I wonder if it would be possible to re-create RoR, but in a more library-form. User has to do more work (no generated files), but more flexibility in the long run?
Hmm.. let's see, you can hook up an XBox to TV. At least on the XBox you can download movies and TV shows and watch them. You can route your computer's contents to your TV with products such as the AppleTV (and its competitors). At least in NYC, many people don't have room for a full blown TV, so the computer monitor will often double as the TV. Indeed, while I do own a TV, I still watch a lot of TV shows on it (e.g. The Daily Show and Heroes).
Perhaps your in your personal life there is a clear separation, but I don't think it's safe to assume that holds true for everyone. The difference between the TV and computer are diminishing, and many technology companies are working actively to make that difference even smaller.
Besides which, think about it, the people who download the digital content are watching movies on their computer (which is against your point). They could have instead bought the DVD which would also play on any computer. Thus the two are indeed in competition. Name an instance where someone would both do the digital download and buy the DVD.
In NYC at Blockbusters its $5 for 2-5 days, depending on how new the movie is (if I remember it correctly.. I generally avoid them, so it's been a while). Which works out to between $1-$2.50. For most rentals you don't actually need it for that period of time, rather that time is usually factored in for how long it might take you to return the movie.
Assuming the companies get some say in the pricing, they are likely going to want to continue to get the same amount of income from the digital rentals. It's probably true that they save a lot of money by not needing physical stores, employees at each branch, etc., the companies will likely see it as a chance to make more money anyways.
The $2/day is therefore a compromise. If the download speeds are fast enough, you are most likely going to return the video the same day you rented it, and still stay below $5. On the off chance you want the movie for longer, after 3 days you are only slightly above Blockbuster's price, and still don't have to worry about late-fees.
The big question is how they decide the timing. IIRC, the XBox has a $4-5 charge for a several day rental, copying how it's currently done in real life. This doesn't make a lot of sense to me. It's digital, there's no reason to necessarily copy real life. A per-day-charge makes more sense in how movies are actually used. Additionally, the movie expires after that time, so if you never touch it, you are still charged (they can detect if you watch it or not, so that's obnoxious)
An alternative would to be go with a Netflix approach, which I prefer the most. It's good for them, as they get a guaranteed monthly income from you, and you get to have up to N movies out at a time. Watch a couple while you are downloading others in the background. When you're done with it, it gets deleted, and you have more slots open. With Netflix, for $10.00/month (or close to it) you get two movies at a time. So you'd always have one watchable movie, and one movie you could be downloading.
Someone else pointed out that part of the issue is that Walmart sells DVDs already, and thus they were competing with themselves. I suspect they started the digital distribution because they realized long-term DVDs are dead. Even if a winner is ever found for Blu-Ray or HD-DVD, it might be too late now. Not that people won't buy them, but for most movies digital distribution seems likely to become the preferred method.
.. it's certainly out of their area of expertise), or do they go ahead with their current sales with the knowledge that they'll lose out later on? One thing to consider, their primary market is not exactly tech-savvy, and therefore will likely continue with DVDs for the next 10-15 years.
However, short-term, DVD is still king. So do they cut into their current sales for an uncertain future (can they really win against the other big-players?
Another possible explanation, is perhaps they realized getting into variable-pricing was a mistake. If history gives us any lessons, the media companies are greedy bastards. They don't seem to give much thought into long-term planning. This is one case where the intelligence of Apple really comes through. They realized that unless they could control the prices, companies would try to charge more money than the physical media costs. I suspect after some grace period, in order to save face, NBC will come back to iTunes.
I won't argue against the anti-DRMists. I'm generally not a fan of DRM, but have also generally gone with the lesser of the evil. I don't buy CDs, because I don't have the room to store them, I don't like destroying the environment, and I don't use CD players anymore. IMHO Apple's DRM tends to be less evil. In part because Apple doesn't really like DRM -- they haven't yet gone out of their way to really screw you over, and generally ignore the hacks around their system. Sometimes they'll fight back, but so far have given in to the end (showing signs of intelligence).
The thing is, I like renting movies. There are plenty of crappy movies I only need to see once. Providing some system that allows me to do that is a great benefit. It means I don't have to walk to the rental place. I can get the movies whenever I want, and I don't have to worry about DVDs that are overly scratched.
DRM is really the only conceivable way to do this. My main worries is that they'll restrict the rental in stupid ways. Like how long per DVD? Is the time based on when you watch it? If not, downloading a DVD is a time-consuming task, and some pre-planning will have to be involved.
I would think a much better system is to do something like Netflix. Forget about amount of time you have the movie, and instead just do number of movies you can have checked out. Also, if they make the rent time too short (and charge the same amount of money) it may in the end not be worth it. Another approach might be to do something like $2/day.
No, I'm suggest let the things that belong to the web be web, and the things that belong to apps be apps. For example, if a blog website would still produce the blog material as web pages. However, the editing of the blog would be done through a client that gets launched from the web page. There's no need to index the form pages.
Besides which, there are plenty of web pages out already that are difficulty to semanticize. The more we enforce the distinction between content and function the easier it is to parse the pages.
That's part of my beef -- instead of allowing for well used (and much loved) languages to compete for internetty apps, we're instead forced to use 'specialized' languages. I have the same gripe with Matlab, Mathematica, etc. (and thus welcome our Sage overlords).
Yes, I am talking about rich clients, but only because in the end that's mostly what AJAX + HTML is trying to emulate. For example, the ThinWire link that someone else gave is trying to provide the same controls of a rich client, but through a medium that wasn't really designed to do that.
I have great respect for the people who write those libraries -- they've managed to take AJAX to its full potential, but it doesn't strike me in the end as a particularly elegant or final solution.
The only real "internet-ready" "rich client" GUI that I know is Java. Possibly TK/Tcl. In theory someone could take either the Qt or GTK+ libraries (minus some licensing issues for Qt, and platformability issues with GTK+ [at least last time I checked]) and make something that could easily be sent as an internet-app. Unfortunately no one really has at this point. At least not to the level where it's really easy to develop and deploy and have work inter-mixed with web pages they might be launched from.
I think I used the modifier good too. If not, I apologize. I'd like it to be good.
As far as I can tell, Flash was never intended to do complex GUI things. It's only with the last release of Flash that it allowed a completely code-based GUI to be created (and not all of that crazy timeline editing). And even still, adding the controls, creating their handlers, etc. is horrible.
If the future is making Flash GUIs, I do not welcome the future.
I'm actually a big fan of both OOP and functional programming (e.g. I like both C++ and Scheme). I should also point out that C++ is and never has been a purely OOP language .. Bjarne Stroustrup has gone to great lengths to ensure this. While template hacking has its own issues, Boost actually provides a good deal of functional-programming functionality through use of templates.
I know there are some proponents of Javascript. Yes, it's nice that it provides things like closures. But I'm not a huge fan of the syntax of the language, nor have I ever felt it was feature complete (at least the libraries provided for the web). Flash makes much better use of javascript, but I think very few people would claim it's a great solution. People use it because there aren't many alternatives.
I'm a big Python advocate myself. Yes, the whitespace issue is really annoying, but once you get past that, it does a lot that other scripting languages don't. Oh, and here's the obligatory XKCD comic to prove my point:
http://www.xkcd.com/353/
I would be willing to try out ASP.Net, though I'm going to guess I can't actually develop for it since I own a Mac.
Also, more importantly, I don't actually want a solution that spits out more HTML. I don't want my GUI in a web browser. I want a real actual GUI on its own. Kinda like what Java can, only with a lot less Java (oh, and a much better designed GUI).
I think a large part of the people's opinion on AJAX depends on what they're doing. It's difficulty depends in part on the framework/libraries you use. For example, script.aculo.us and RoR hide many of the details for you. On the other hand, if you do outside of what they do well, the difficulty level quickly rises.
I think one sign of this difficulty is that just about all AJAX libraries do the exact same thing. The same basic special effects, field additions, etc. The fact that none of the libraries go beyond these, points to what's hard to do.
Javascript isn't a great language. It's not robust, and it's difficult to really do good architecture with libraries using it. HTML is a pretty decent method to mark up text, but wasn't meant originally to ever be interactive.
Tying together a hacked together language with HTML doesn't make for the greatest programming experience. Especially compared to any real GUI framework.
Maybe most people don't want/need a real GUI framework, and AJAX covers all the bases for them -- in which you're probably going to say you like AJAX.
However, I suspect if AJAX and HTML were really so great/powerful/easy, many people would have stopped using flash already. I have no love for flash, but it can do things much more easily/faster than AJAX can for many tasks (disliking both technologies I'm pretty non-biased here).
What I would love to see is a standard *real* GUI for the web that is non-language dependent (i.e. whatever scripting language you prefer you can use). I'd even use something like Jython with newer/better GUI libraries. But we really need something written from the ground up with GUI in mind.
First, I'd like to point out the post immediately following this is on the missing matter in the universe. Coincidence? Read the book.
Secondly, I would propose there are likely no great solutions to the problem. There are decent ones, but the difficulty you'll run into is that there will always be multiple satisfactory organization schemes that work. Which means if you really need things to be complete, you'll need duplicates of all your books.
I had a similar issue when I was in grad school, and was trying to figure out how to organize all the papers I read. The standard is to organize the papers by last author (i.e. whoever's lab the work was done in). However, this causes issues when someone starts their own lab. Sometimes name-order changes, and sometimes two labs will collaborate.
My final solution was to give up on trying to impose a physical organization, but rather keep an electronic database of everything. I then could keep folders of no more than N papers, each one added in chronological order it was added. The database would hold which folder the paper is placed in, and its index in the folder (i.e. the kth paper).
Finding any paper by hand is pretty futile, but within 5 seconds using the computer I can locate any paper I wish. Likewise, a similar strategy could be used for a bookshelf. You just need some method to demarcate ever Nth book.
For the database you can use the standard MySQL server (I unfortunately used XML, to which day I still regret). If you're into web pages, it's a pretty simple task to use something like RoR to make a quick interface for entering book information.
However, this is a bit unsatisfactory if you want to use a bar-code scanner. Personally, since I mostly use Macs these days, is I would write something quick using PyObjC. Programs such as Delicious Monster use the web cam to read in bar codes, but writing your own might be some work (not impossible, though), so buying a bar-code scanner is probably better option (whatever happened to the CueCats?)
I'm pretty sure I failed to properly answer the question, because this all requires a bunch of coding. However, it's a pretty decent project for any intermediate programmer. The XML solution is nice, as you can enter in the entries by hand, no complex interface required, but you also get no automation, and reading in large XML files can be slow at times.