It's Time To Revive Hypercard
HughPickens.com writes HyperCard, an application program and programming tool released for the Apple Macintosh in 1987, represented the 'computing for the people' philosophy that enabled users to go past the pre-built software that came on their machines, and to program and build software of their own. "Mac users could use Hypercard to build their own mini-programs to balance their taxes, manage sports statistics, make music – all kinds of individualized software that would be useful (or fun) for individual users." Now Jer Thorp writes that the end of HyperCard left a huge gap that desperately needs to be filled – a space for an easy to use, intuitive tool that will once again let average computer users make their own tools. According to Throp, this type of plain-language programming makes sense, particularly in an application that was designed specifically for non-programmers. "I find the largest concern for learners to be not with the conceptual hurdles involved in writing a program, but with obscure and confusing syntax requirements. I would love to be able to teach HyperTalk to my students, as a smooth on-road to more complex languages like JavaScript, Java or C++." By putting the tools of creation into the hands of the broader userbase, we would allow for the creation of ultra-specific personalized apps that, aside from a few exceptions, don't exist today."
HyperTalk wasn't just easy, it was also fairly powerful. Complex object structures could be built to handle complicated tasks, and the base language could be expanded by a variety of available external commands and functions (XCMDs and XFCNs, respectively), which were precursors to the modern plug-in. But ultimately, HyperCard would disappear from Mac computers by the mid-nineties, eclipsed by web browsers and other applications which it had itself inspired. The last copy of HyperCard was sold by Apple in 2004. "One thing that's changed in the intervening decades is that the hobbyist has largely gone by the wayside. Now you're either a user or a full-fledged developer, and the gulf is wider than ever," writes Peter Cohen. "There's really nothing like it today, and I think the Mac is lesser for it."
HyperTalk wasn't just easy, it was also fairly powerful. Complex object structures could be built to handle complicated tasks, and the base language could be expanded by a variety of available external commands and functions (XCMDs and XFCNs, respectively), which were precursors to the modern plug-in. But ultimately, HyperCard would disappear from Mac computers by the mid-nineties, eclipsed by web browsers and other applications which it had itself inspired. The last copy of HyperCard was sold by Apple in 2004. "One thing that's changed in the intervening decades is that the hobbyist has largely gone by the wayside. Now you're either a user or a full-fledged developer, and the gulf is wider than ever," writes Peter Cohen. "There's really nothing like it today, and I think the Mac is lesser for it."
The majority of us did not have money to spare for Macs. I have no doubt that they were the best personal computers around. I used them.
For less expensive computers, there was the BASIC interpreter. Not as WYSIWYG or simple and Beginners need to think when coding, even at that level. It also had the advantage of being close to a standard untill MS teurned it into QBasic then dumped it.
BASIC is what we need again but standardised and improved a lot.
I'll see your Constitution and raise you a Queen.
LiveCode is free, supports Mac, Windows, Linux, iOS, and Android. Best of all, it speaks HyperTalk, plus has more flexibility HyperTalk didn't.
I've moved on from wanting HyperCard, to using LiveCode.
Obligatory - smart people have been working on it for quite some time. (Although admittedly, their main goal is to prove that common personal computing is ultimately squashable into 20 kLOCs.)
Ezekiel 23:20
No it's not.
I learned on HyperCard, so I know your pain. I still use HyperCard daily at work.
However, many years ago I discovered Runtime Revolution, a commercial product that is effectively what HyperCard should have been. Recently it's been released freely as LiveCode. Check it out. Runs on anything you'd want it to (Mac, Linux, Windows, etc.).
I learned to program with both BASIC and HyperCard, depending on which machine I was on at the time, back when I was younger. I think it's a great idea. I built simple "database" simulations, using nothing more than the free stuff that came with it, and it helped to mold my initial approach to programming. I even created a testing program we used at my high school for a couple of my teachers that was ran over a network. It was fun AND useful.
. Define sqrt(x) as something really evil like (x / rand()), and bury it deep. Watch your coworkers go nuts.
APL, FYI. HAND.
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
There is a more or less successor of Hypercard called Livecode. Its open source and work on many devices.
I have seen some attempts to r creating HyperCard, but nothing really seems to have come of them. If there are any successful or fully functioning open source equivalents I would be interested in knowing about them.
I used HyperCard a bit and in certain ways the closest equivalent is something like PowerPoint or Keynote, though even with them there I a huge gap with HyperCard did. I wonder whether Apple could recreate a 21st century HyperCard, but using Keynote as a basis?
Jumpstart the tartan drive.
Years after using hypercard i developed software for a few years, but without something as easy and quick-to-product as hypercard, i am not sure i would have learned real languages
I wish there was an open source project similar to Quickbase (http://quickbase.intuit.com/).
I worked at a large company that used this extensively, and it fit that "computing for the people" niche. When non-technical departments in the company needed a simple application, they were able to do it on their own.
There was a free, but not open source tool for a while that was close to Quickbase, called DabbleDB. Unfortunately, it was bought by Twitter, then shuttered.
I have since seen some attempts to make something similar, but they always missed the mark by either being too hard to understand, or not flexible enough to be more than a spreadsheet.
https://ifttt.com/ Check it out.
'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
I've felt the same way for years. I had high hopes for Google Wave to fill the gap.
It's not the same thing, and scripting for end users would not have been the same, but we don't need a direct replacement. We need:
- Web based, cloud based.
- Multi screen sized, flowable
- The card stack model from HyperCard was GOOD for naive use - and perfectly carried into Google Wave
- Simple scripting, but probably JavaScript not HyperTalk
In fact, my ideal system is somewhere in the middle of Wave, HyperCard, Lotus Notes, XSLT or similar and the web.
- Document templates that can be filled in. Let's get rid of MS Word and have more structured docs, but in a way that hobby developers can cope with.
- Effective visual editing of templates; HTML template editing but much more like a good UI editor,
- Somehow remove all the complexity from the scripting of events... HyperCard WAS good at this!!
I'm not going to mention SharePoint. MicroSoft NEVER understood groupware!
So we shouldn't have easy-to-use tools for people to LEARN how to program? Or for people (including kids) who never thought about programming, but took interest in it only after writing some software using an easy-to-use tool?
I started using HyperCard in 1990, in grade 9 after-school computer class. I loved it. I've been writing code ever since.
Get off your high-and-mighty "professionals are the only ones who can do things" box. Just because you might have a degree, doesn't mean you know your face from your ass when it comes to code compared to some there people who don't. Just sayin'.
False. There is something exactly like it and which has exceeded it. It's called Livecode. It offers the same stack/card philosophy as Hypercard, the same basic interpreted language as Hypercard, and things written in it can be deployed on Mac, PC, Linux, iOS, Android, and soon HTML5. Did I mention there was a Community version that was 100% free? (Created via kickstarter) It offers plug-ins for greater functionality, like animation and spell checking... I could go on.
Livecode.com
Current version 7, check it out.
Great insightful article.
I'm a SE and recently I bought a laptop to gift with Windows 8.1 - but it could be anything; iMac, Linux, etc.
I wanted to simple do something cute like "Happy Birthday" etc. in line with the technology available, but no
offering available provides the tools to eloquently do this. It can be done, but it's not trivial and requires a level
of expertise not available to the average consumer. IApple purposely blocks apps that implement a language
due to self-competition, but there's no excuse for MS and Linux to do so
35+ years of software and it's still largely in the realm of geeks... Sad.
Google Livecode. Livecode is a multi platform programming tool developed in Edinburgh Scotland.
Occurs to me it's hard to explain what Quickbase is without an example. Because of that, many people assume it's a project management app, or a crm tool, etc. It's not. You can make either of those with it, or other things...
Browsing their catalog of prebuilt apps is probably the best way to get the gist of it...
http://quickbase.intuit.com/exchange/client-services-call-log/289 - a customer call log
http://quickbase.intuit.com/exchange/abc-legal-case-manager/474 - case management for a law firm
I guess this probably sounds like an ad, but it's not. Where Quickbase falls apart is their licensing. The cost is per user, which is fine, but then they also cap the number of applications you can have...which totally defeats the purpose of allowing end users to create their own applications. You can, of course, raise the cap, but the pricing gets out of control.
Very cool, but limited to event oriented problems that don't need an app-specific UI.
I'm intrigued by the idea of LiveCode, but are you serious about its built-in language being called "Grundle"?
I can't go to my boss and suggest the use of LiveCode if it has a name like that. For anyone who doesn't know, grundle refers to the area between a man's anus and scrotum.
The Coq Proof Assistant project has a similar problem. This software would be seriously useful at work, but we can't be sitting in meetings with passersby hearing us saying what they hear as cock (as in a long, thick, throbbing penis) for hours on end. We also can't go to customers and say stuff that they'd hear like, "Don't worry, our cock has verified it."
We don't need more average or low-end hobbyists writing software. ... When these amateurs try to write code in any sort of a business or professional setting, it usually ends up being the IT department or professional software developers who get to maintain the crap code in the end
I did not think this is about writing enterprise software. Where I work the system is so locked down that you could not write anything yourself anyway. Even before it was locked down, there was no way that IT would have taken over code not written outside their Dept.
When personal computers first came out they were all about the user programming it themselves. I still have some old handbooks that came with computers then (they were well written) and they were straight on to programming (in BASIC, or OPL in the case of the Psion hand-held I once had). These were easy and satisfying languages to use for what they were intended. For eg the Psion I wrote programs to keep score in Scrabble, "throw" dice, keep track of my bank balance, and such like. That is what this is about.
This opinion gets written up at least once a year. Nothing's new this time around.
Except..
Now we have a viable alternative to Hypercard: the Brainfuck programming language.
You can thank me later.
https://app.box.com/WitthoftResume Code: https://github.com/cellocgw
I've used these sorts of things extensively before. They all fail for the same reason.
Programmers often assume that the hard part of programing is the obscure syntax of languages, because to them when learning a new language, that's what's hard. And while yes, the syntax is difficult at first, the novice does get it eventually. The real problem with the novice is often the counter-intuitive logic often presented in programming.
For example, take the typical problem of "If they chose Yes, I don't want the program to do X. But if they don't, I do what them to do X"
The novice often has a hard time even articulating that condition in the English language, much less a programming one. How would simplifying the syntax make it any easier?
The solution to a programmer is simple: If "yes" then X
and the novice asks in alarm "Greater than or less than?!!? WHAT?"
So then you have your "easy" programming language that's similar to English. That's great, how do you articulate that previous statement in that language now? It's not any easier. On top of that, because you've dumbed down the language to make it more user friendly, you've likely also taken away a lot of its power. The archaic syntax of languages is often for a very good reason. And when that user does start to get somewhere, they'll end up in a forum asking how to do it, and the programmers will flat out tell them the logic at which point they'll find out that they can't apply that logic because of the simplified syntax.
If you're just starting out, I'd recommend this: http://www.autohotkey.com/
The syntax is about as user friendly as you'll ever get.
You can write the applications in notepad
You don't even have to compile them if you don't want to.
It can do just about anything any major language can.
Well this might not be for Mac users, Microsoft Project Siena might be a useful option for people on the Windows platform. http://www.microsoft.com/en-us...
This 'story' is just a copy/paste from Ars Technica used to get the submitters URL/username on the front page of slashdot.
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
Thingamy seems to have a similar goal, but appears to be targeted only for large user base purchases. Sad, as the background material seems well thought out. http://www.thingamy.com/
Obviously, you've never had to hire CS graduates.
I can't tell you how many of these bozos who've learned in a "formal" setting can barely manage a coherent if/then statement, much less successfully complete even a small in-house application.
Granted, most of the self-taught crowd is weak on specialized algorithms and data structures. On the good side, self motivated autodidacts rarely have trouble picking this up, when necessary. CS grads seem to need a professor, hand-holding and a cookie in order to learn anything new.
Please do not read this sig. Thank you.
The 2004 time frame coincides with the switch to Intel. If Hypercard were recompiled for Intel and AMD it could be provided as a free tool similar to Xcode. It seems a shame to dispose of such a well developed code base.
We already have a pretty nice 3rd party product called SuperCard which is very compatible with Hypercard. At $279 its not getting much traction. Apple should buy this product and ship it free with every Mac.
It's fairly trivial to learn a language at a decent level. We have a lot of languages that abstract away all the "hard" stuff like OS interaction and memory management. Take Java. Take C#. There is literally an object for EVERYTHING you could possibly ponder doing. You dump some values into that blackbox, it does its magic and presto, result.
The hard part of creating software is designing it. And no environment can take that part out of your hands. There is simply no way some piece of software could magically read your mind and produce it.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
The problems are that all variables are global and there's not a good way to create a function for it. It's not designed as a visual programming language but as a simple way to put together a bunch of simple tests that don't need to reuse a lot between them. If you want to share the code that logs into your web page every time, the easiest way to do that is cut and paste. Then you have to change 80 copies of it if you ever update that code. They were working on improving that situation last time I looked at it. You wouldn't ever want to use it to accomplish work in a production environment, but you probably would never want to use Hypercard to accomplish work in a production environment. Some people probably DID do that, but you wouldn't want to.
The problem with creating something like Hypercard is that it's very hard to hit that sweet spot where it's easy enough for non-programmers to use while being powerful (and secure) enough to be useful. Whenever people get their hands on something like that, they tend to start working around its deficiencies to accomplish their goals. You end up spending more time working around the deficiencies in the environment than you would have if you'd just written the application in a real programming language to begin with. There was quite a lot of THAT going on in the late 80s early 90s, too.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
I think you're trolling, but free expression is great. That said, you're out of touch with the last decade.
Please troll better.
Wasn't that the idea behind Visual Basic, the users could write their own little functional pieces of code. This is why VBS macros exist in Microsoft Office and Windows.
Entia non sunt multiplicanda praeter necessitatem.
I programmed Hypercard a lot in middle/high school in the mid 80s. I got to college and was taking an AI course using Lisp, and was working on a reinforcement learning assignment. I had a bug in my program I couldn't track down. The smartest guy in the class sat next to me and he couldn't figure out the bug. Neither of the two TAs for the class could figure out the bug. I rewrote it from scratch and still had the bug. At one point I said "If I was working in Hypercard, I know how I could solve this." The smartest guy in the class said "That's crazy." The TA who was helping me out said "When you're ready to talk seriously about this I'll come back and help you." I went home that night a wrote it in Hypercard and it worked. Slow as all hell (it took 24 hours for one test run), but it worked. It was easy to make nice graphics of the mouse and the maze the assignment was about, which went into the final report. I got 110/A+ on the assignment.
I've never balanced taxes. Is this a new thing?
Oh, you mean balance checkbooks and pay taxes. There's much better software to do that these days.
And there are much better ways to teach programming. For a very long time there has been a movement to bring programming to the masses, as if, somehow, everyone would be able to write beautiful, intricate code to solve their most complex problems. Most people can barely match their clothing (note to the reading-impaired: that was hyperbole); why should we expect them to be able to write code?
Writing programs requires clear, linear thought. It requires thinking in terms of structures and systems. The push in the greater population has been toward valuing non-linear thought (although that baffles me), so there's a big mismatch to overcome. Yes, there are plenty of graphical programming languages that reduce the need for precise syntax, but they only REDUCE it, not eliminate it, and they still require procedural thinking which, ultimately, presents an insurmountable difficulty for many people.
Not everyone can or should be a programmer: Not everyone is a writer, Not everyone is a photographer, Not everyone is a painter. Sure, everyone should be given basic skills in writing, and perhaps in drawing or painting as a child, and so perhaps everyone should be given basic skills in programming, but beyond that, why? Not everyone is able to understand calculus; why should we automatically expect that everyone should be able to write Java, Python, or whathaveyou?
Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
No, that's what trade school is for.
But a more relevant question would be: can we devise a building-block language that solves today's real-world problems? Such a language should be (1) capable of solving simple problems easily for general users and (2) allow including complex 'blocks' for those willing to climb the learning curve it would take to include some highly specialized function in one's program.
The last decade?
The one where self-taught Ruby on Railers have created slow, bloated monstrosities that make huge Java enterprise apps feel sleek and fast?
The one where self-taught JavaScriptists have written slow, bloated monstrosities ("responsive web apps", as they like to misleadingly call them) that make Java applets feel sleek and fast?
Give me the decade before that, when people went to college to learn to program. The software they created was faster, had better UIs, and made us more efficient. It didn't leave us wondering where the fuck our menu bar went, or wondering what the hell some obscure icon is supposed to mean, assuming we don't die of old age before our app finally loads and is usable.
This is nonsense. I learned a little programming back in chemistry undergrad when they decided to use x-ray diffraction calculations to teach us some FORTRAN. I've been programming here and there since. Some of it has even been useful. I wrote a number of HyperCards back in the day and really liked the environment. It was quick and easy to put together a nice little program for specific tasks. There was a low barrier to entry and it was easy to make useful things that you could never find an IT whiz to do for you.
Here's the problem. It's a lot easier and more likely to happen that a chemist learns a little programming to get a job done than to try to teach chemistry to a programmer and get his management to approve him spending the time. If a project ever gets escalated to where "real' programmers are needed, the scientists can, at least, have realistic expectations and do a better job explaining the problem. I've helped with the design of data models, which greatly lowered a project's complexity, because I knew a lot more about how the data was used.
I have a good knowledge of my limitations. I now have a pretty good knowledge of yours except that I don't know who you are.
It wasn't just for beginners. HyperCard was used in the development of Myst.
Where is the demand? If the demand for this sort of thing was high, there would be several competing products on the market.
If the people don't want it, you can't make them want it.
Obviously, you've never had to hire CS graduates.
I can't tell you how many of these bozos who've learned in a "formal" setting can barely manage a coherent if/then statement, much less successfully complete even a small in-house application.
They learnt to derive the maths and complexities for various data structures but invariably use linked lists. And when that gets too slow, they start "optimizing", also known as obfuscation, in order to squeeze out 15% from an O(n^2) or worse algorithm, making it much harder to replace it.
It's about as painful as seeing some material science major twist off screwheads. It's nice knowing the theory, but you need to feel the pain of the laboring iron in your bones if you are actually working in the field.
Professionals with years or even decades of experience have enough trouble writing secure software.
And just where do these "professionals" who can't write secure software get these years or decades of experience??
It's even worse when they use "beginner-friendly" languages like PHP, Ruby (with Ruby on Rails), and JavaScript. These languages are totally shit, and end up promoting buggy, insecure code.
I don't know PHP or Ruby, but javascript is in no way "beginner-friendly". I'd been coding in BASIC, assembly, xBase (various dialects), NOMAD, and a couple I can't remember (I'm getting old) for well over a decade when I needed javascript.
Javascript is crap. Often useful and necessary crap, but still crap.
When these amateurs try to write code in any sort of a business or professional setting, it usually ends up being the IT department or professional software developers who get to maintain the crap code in the end.
It's true that someone who thinks he knows what he's doing but doesn't can really screw a project up, an idiot I worked with who thought he knew dBase almost cost us a ten million dollar Federal grant by removing some columns in some tables in an application I wrote. I was able to make it work anyway.
Asimov got it right in Foundation; those who know little and are aware of their ignorance aren't dangerous, it's those who think they know but don't that are.
But I was mostly self-taught, only taking classes after I'd been programming for years, and few of the classes taught me anything I hadn't already learned from reading hundreds of books on the subject and practicing.
And we can't forget how these half-assed amateurs often start "contributing to" (a.k.a. destroying) open source projects. Thanks to them, we have disasters like GNOME 3, where instead of trying to make efficient, effective software, they just ended up trying to make a shitty, half-assed copy of their warped understanding of OS X.
It's not that they're shitty programmers, it's that they're shitty designers, and the professionals at Microsoft are no better; Windows 8, anyone? And whose code is the least secure? Yep, your fellow professionals at Microsoft with their warped "understanding" of UI, just like the GNOME devs.
We shouldn't promote the idea of them getting involved with software development. We should discourage it!
No, we should develop easier to use tools. The languages and compilers you professionals are writing suck donkey ass.
Free Martian Whores!
_ I had a joke about it but the punch line kind of writes itself
_ no magnetic stripes so storage should last longer
_ paper is bio degradable so it is more eco-friendly
_ we have been too spoiled with code editors
Never antropomorphize computers, they do not like that
Clickteam fusion and gamr maker seem to have taken much of the general structure of hypercard.
I'm impressed they have held on all these years.
Obviously, you've never had to hire CS graduates.
Leave the CS graduates alone. You're hiring them, for what? To lower their self-esteem? CLUE: COMPUTER SCIENCE IS NOT COMPUTER PROGRAMMING. You don't hire a mechanical engineer to fix your car, you hire a mechanic. You don't hire computer scientists to code, you hire (I don't know if you've heard of these guys) PROGRAMMERS.
But I guess sometimes there is good reason to hire a brain surgeon to apply a bandaid.
..you're any good at logical thinking, and that's the biggest part of the problem.
Add to that, most languages mix multiple concerns within one context.
When people ask for "building blocks" they are asking for a system of rigid, predefined, tested methods for the particular domains.
It's all still a work in progress.
Anyone who says differently is selling something.
I don't want a self-taught developer writing flight control, banking systems, or medical embedded systems code. I'd rather have someone formally trained doing that work. On the other hand, there's plenty of places where if the code doesn't quite work right I don't really care that much. From everything of the once-thriving online text based gaming community (the MUSH, MUCK, MOO, MUX, MUD, etcs) to simple web pages or even stupid phone apps, there's a place for "non-professional" programmers.
Similarly, there is a place for non-professional carpenters -- my trained-programmer father has made every bookshelf in my folks house, a couple tables, has redone the 2nd story deck multiple times, and redone the roof (structural and laying shingles) on the horse barn on the back of the garage, and a bunch of brio-compatible track for me when I was ~4. He doesn't redo the main house roof (45 deg slope or more -- too steep), nor does he repoint the structural brick exterior (1920s house) or do plumbing when it involves sweating copper.
He also taught me enough of it (I helped him on most of what I listed above as a teen) that I've done plenty myself; four bookshelves, two desks (one used bookshelves for legs, the other is just an oak plywood surface for a geekdesk base, but stained and varnished a nice deep brown), and one storage cabinet with removable shelves that just happen to be 60x90 LEGO studs in size. Oh and an exterior door on my own 1960s-era house -- that was worlds of fun since while you can order a door and frame to the right opening size, the way houses set doors into the house's wooden structure has changed since my place was built. That was a learning experience (doors are a pain in the ass) and I let professionals have the fun of the next exterior door that needed to be replaced -- who, by the way, cracked the trim worse than I did when they replaced it.
Its about knowing what you know, what you don't, and what you should (or want to) call in a professional for.
Slashdot Patriotism: We Support our Dupes!
You've been hiring CS grads from the wrong Uni.
I have a feeling a new revival of Hypercard would do well having Wolfram Language as its back end.
It's basically the most powerful thing ever created, and I can't believe it hasn't gotten more attention
Hypercard was incredible back then. If Apple had thought about integrating it with network features from the beginning, the internet might have looked a lot different.
Snob.
Are you really serious.
Perhaps you're writing satire. Poor quality. Poor taste.
It's not the same thing, and scripting for end users would not have been the same, but we don't need a direct replacement. We need:
- Web based, cloud based.
- Multi screen sized, flowable
- The card stack model from HyperCard was GOOD for naive use - and perfectly carried into Google Wave
- Simple scripting, but probably JavaScript not HyperTalk
Wrong on all accounts except number 2 and partially number 3.
Cloud and Web based is ridiculous, the whole point is that the user is not constrained by browser based idiocies, otherwise he could pickup html and javascript. Besides wanting a non pro user to understand javascript is stupid, javascript is probably one of the worst languages to debug.
The card stack model is good, but hardly anything any basic user wanted locked into google wave.
So please stop throwing fad words at stuff: the whole web and cloud based fad turned many perfectly good desktop applications into slow and worthless apps.
From my own personal experience I just want to say if you enjoy programming and think maybe you'd like to do it as a career... Go for it.
Every job type has a certain percentage of workers who are barely skirting by and somehow get paid for it. There's doctors who shouldn't be, lawyers, etc... There's also the elite that truly know what they're doing and are at a much higher level of skill.
Believe me when I say most programmers are the former.
The #1 most important thing IMNSHO is a continual desire to learn and improve. If you have that, you may start at the bottom but you will eventually become good or great at it.
As a hobbyist you already seem to have that, just keep it up.
Many "professional" developers do copy and paste coding, grabbing chunks of code off stackoverflow and not taking the time to understand them. They don't write test cases for their code, instead they patch it over and over whenever they run into an unexpected condition. Instead of reading through their code to spot the bug, they'll change random parts and attempt to run it over and over until they get lucky... Often leaving some of the unneeded changes in place causing more bugs.
If you can avoid doing those things, you're probably better than half the guys out there. :-)
So if you enjoy it, you can do it for a living, and maybe do it well.
Cwm, fjord-bank glyphs vext quiz
False dichotomy. High-quality open literature sufficient to learn the skill well is available for programming. This is not the case for the other skills you mentioned.
Also, in the strictest sense of the word, "professional" programmers are not professionals, as opposed to doctors, lawyers, accountants, bonded tradesmen, etc.
If the only requirement to hire someone in your profession is that they are skilled and/or have a degree, it's not a profession, it's a job.
>Get off your high-and-mighty "professionals are the only ones who can do things" box. Just because you might have a degree, doesn't mean you know your face from your ass when it comes to code compared to some there people who don't. Just sayin'.
I've seen way more garbage code from those that don't than those that do. Self-taught "programmers" are guilty until proven innocent, if you ask me.
These don't qualify as simple tools to build mini programs?
The bigger problem is that Apple (and others) abandon software and make their OS incompatible with legacy software so that we can't continue using our old tools. If the software followed the API rules in the past it should continue working with the new operating system and the OS vendor should not abandon it. If they want to get rid of old APIs they should provide cross-recompilers for older software or emulation. There is a tremendous legacy of software that is lost because Apple and other companies change their OSs on a whim.
These don't count as simple tools for users to build mini programs? RD
Oh, my heart bleeds at your shell shocked ass when you discover the Wizards aren't like Elminster, but like OZ.
I ran into a "hypercard"-like app for the C-64 back in 1986, that involved you building a flowchart of your app, answer some basic questions, and it would generate the Basic code for it. It was pretty spectacular for the day. There are quite a few code generator programs available today, just get one that runs on Python and give it a snazzy GUI. There you go. A nice easy to understand app generator that's cross platform, multiple output languages, open-source, self-extending, etc. etc...
You would spend more time on the design of the GUI, writing the help files, and creating tutorials, than anything else. The user wouldn't even have to know ANY particular language, just the logic they needed.
But that's just my opinion. I just build stuff.
When you want something built, come see me. If you want correct grammar and spelling, get a F*ing liberal arts student.
Oh, I most certainly leave them alone. I've learned to just toss all of the CS resumes in the bin. The few who have any intellectual curiosity are already working for Google, and the 99% are fairly useless.
It's a lot easier and more likely to happen that a chemist learns a little programming to get a job done than to try to teach chemistry to a programmer ....
I've helped with the design of data models, which greatly lowered a project's complexity, because I knew a lot more about how the data was used.
This and absolutely this. An immense amount of useful things in the real world only require very basic programming but require an understanding of other things that programmers don't know.
HyperCard combined three aspects: (1) A easy-to-assemble set of graphical/user interface components; (2) a simple (simplistic) database; (3) a quirky programming language.
Possibly VB with Access provides a similar set of functions.
We should be able to produce something that allows end users to do some development for themselves, while acknowledging this is not a production-quality tool, but no matter what, people will take prototyping systems and try to deploy them to production usage.
I've used it for several different things, including catalog/library "decks", user interface mock-up with a bit of back-end semantics (for a system configuration function, to understand user requirements and usage models), and a potential front-end controller to a very simple 'robot'.
Yes, I'm sure you've emerged from your mother's womb as a full-fledged software developer. Fucking elitist dipshit. I have some CS experience from school so I took upon myself, on my own time and dime, to learn VBA for Excel. I am one of those "dumb-ass" managers who made a few time-saving tools with VBA for the hotel I work in. I know that my code is amateur at best. I also prefer that my corporate IT won't ever know my code exists, especially since "professionals" like you are so helpful to noobs like me. Through word of mouth, however, my tools are now used in several hotels. Hypercard, BASIC, VBA, whatever: what took a real person 4+ hours to do now takes the same person 10 minutes SOLELY due to the fact that an easy-to-learn-and-program platform was available to me. If all I had was "heavy" language, that same person would still be wasting 4 hours every week. I even have a counter to a popular rebuttal: "so, what happens if something goes wrong with the code and you're no longer working for the hotel? Who's going to fix it then?" That's right, I didn't think of that! I'm going to continue to waste time and labor just so that I can spare the uber-professional IT guy five years from now the pain of going through my amateur code. If it's your job to maintain and expand someone else's code, oh well. Please, don't propagate your elite-speak and go back to whatever elite thing you were doing. I now have six VBA projects involving anything from supply inventory to billing clients in the neighborhood of $30k every week. Good for me: bring on the Hypercard. And just in case you work for my corporate IT, I'm going to go through all of my VBA projects and delete all of my super-friendly comments of what I'm trying to accomplish. Since you are so elite, I'm sure you can figure it out without issues... heck, my comments will probably just get in your way.
CS grads seem to need a professor, hand-holding and a cookie in order to learn anything new.
AH! Maybe that's what I need! Bringing cookies to my class. That's smart!
Yes, I'm sure you've emerged from your mother's womb as a full-fledged software developer.
Why would you write something that is so obviously stupid? Why would you write something as stupid as that as the first sentence of your comment, where it immediately discredits everything else you wrote (which I didn't actually bother to read, to be honest)?
No, the GP probably wasn't born a professional software developer. That's probably why he or she went to college, you dumbfuck! He or she had to learn how to become a professional programmer, and college is the only way of doing that properly.
You need to work on your English comprehension and writing skills before you do any more "programming".
LiveCode is great in many ways, and I really appreciate that it is now a free download, but it lacks one feature that really made a difference to people who were learning HyperCard. In Livecode, every object is its own layer. In HyperCard, there was a simple, useful distinction between the background layer and the card (foreground) layer. People quickly grasped how to make a picture or button show up on every card or just one. Now, if you google "livecode background layers," you're likely to get instructions to add a background to a single card. I hate to say it, but I don't think that LiveCode, even free, can build the same kind of community that HyperCard has...simply because of this choice. It's not a trivial difference.
-Gareth
It did have network features, if by network you consider Appletalk. The code 'go to stack addressbok on machine "Andrew's Powerbook"' was valid Hypertalk.
Agree, I used HyperCard for many educational projects and a revamp for iOS & MacOS would be a great new tool for everyone...it would be great to give novice programming back to the computer users for home, buisness, and education!
It has been revived and it has a free / open source version: http://livecode.com/
Far better than the original.
I'd say the reason we don't see a lot of demand for Hypercard-like environments these days is, they aren't necessary anymore.
Back in the Olden Days, if you wanted to accomplish something on your computer, and there wasn't an application available that met your needs, you might respond to that problem by writing one yourself. Hypercard could make that easier for you to do, if you weren't already an experienced programmer.
These days the software market is much larger and more mature, so if you want to accomplish something on your computer, chances are very good that there is already an application that does what you want better than anything you could make yourself. So instead of spending a few days learning Hypercard and then designing and implementing a HyperCard stack, you just Google what you want to do, find five different applications that are ready to use (and probably free, or cheap), and pick one.
So I don't think there is a lot of pent-up demand for a Hypercard-like language these days. People who want to learn how to program will continue to do so, and people who merely want to get a task done ASAP have plenty of premade higher-quality software to choose from. The "middle ground" of people who want to make an app without officially learning how to program has gone away.
I don't care if it's 90,000 hectares. That lake was not my doing.
I was the sample applications programmer for ToolBook, a Hypercard knock-off from Paul Allen's Asymetrix company in the 1990s. It ran on Windows and was used a lot for making educational software. Similar metaphor, a book with pages vs. a stack of cards. Had a similar scripting language that allowed somewhat robust applications if you went that far. Eventually they marketed it specifically to educators and renamed it "Click to Learn".
Macromedia Director with its Lingo scripting language was another contender for laymen's programming tools back then, though it had a score and sprite metaphor.
I'm glad someone posted that. LiveCard is basically HyperCard.
I don't think Applescript and Automator bridge the gap between non-programmer and programmer as slowly and as fluidly as Hypercard did. A non-programmer could start using Hypercard as a simple flat file database without programming. The sample Addressbook etc. Hypercard stacks were perfectly usable and there was a large quantity of freeware and shareware stacks that (inherently) came with complete source code. If someone had just a small wish for how it behaved differently ("I wish the addressbook had a nickname field:) many could be added through the GUI tools without programming. At some point, they may wish for behavior that involved changes in code, if they reached that point, the code had a fairly strong mapping to the concepts they had learned so far (stacks, cards, backgrounds, fields, etc) that they may be able to suss out what the code was doing and figure out simple changes. Once doing a fair amount of modification of the existing code, some may choose to strike out on their own and create something new.
Applescript and Automator seem to be more about simple automation of tasks. Which is a great power to give someone. ("Ugh, I hate doing this same drudgework every day|week|whenever_the_situation_bothers_me") but seems to me still a larger jump from non-programmer to programmer.
Hypercard is gone and way better tools exist for all the things that hypercard did. I learned hypercard as a kid in school and it introduced me to programming. If you want to help your students do the same things I'd suggest you either teach them how to make web-pages with html and css or get them doing Scratch. Scratch is designed as an education environment so I'd say it likely fits the bill. Everyone is capable of understanding Scratch and if they want to go on and learn python or javascript it will be a whole lot easier to get them started.
are the best current follow-ons to the HyperCard simplicity and utility.
"Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
and that's somehow OK? (puerile snickers at words aside...) Language naming isn't exactly highbrow technical stuff to begin with.
"Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
But if it's spelled Koch it's going to offend a lot of people. ;-)
Is it just my observation, or are there way too many stupid people in the world?
I remember my non-programmer uncle using a program on the mac called File Maker Pro to make a real estate program. You could send the program to the makers of File Maker and they could turn it into a stand alone executable for Mac and Windows computers. File Maker may have been the first programming I ever learned. It was all WYSIWIG and very little code beyond basic things like string concatenation.
These days I think the modern web based equivalent might be the "force.com cloud", the platform behind the salesforce.com website.
You sir or madam, do not know what you are talking about as well as being pompous. As long as you can pass the required certification tests, many professions will grant you a license.
That is very true. I've noticed it, as well.
Even a shitty CS student will know about algorithmic complexity, data structures, and basic stuff like that which the so-called "self-taught programmers" just aren't even aware of.
Self-taught practitioners don't even know what they don't know, while at least Comp Sci graduates tend to. A CS grad will know when they need to do some research or ask somebody else about something that might cause problems later on. A self-taught practitioner won't do any of this, because he or she just won't know any better, and will write and ship the unknowingly broken code. This will usually cause problems for the actual professional to gets pulled in after the fact to deal with the awful disaster that the self-taught programmer has caused.
http://lmgtfy.com/?q=mit+scrat...
i disagree with premise that everyone can or even should code. Secondly, I also can't believe a software opportunity exists for an 'unfilled need' for some void existing almost 3 decades. Any place a need exists - and in many cases where no need exists - software erupts. In my job I so hated our project management software, I wrote one on my own time at home. The company had some very unique processes that traditional PM didn't flow correctly. My version was adopted immediately. The point being programmers write to scratch an itch. If an itch exists, someone will offer an option. That's how we're wired.
"Now you're either a user or a full-fledged developer, and the gulf is wider than ever,"
"If any question why we died, Tell them because our fathers lied."
The cookie was metaphorical, but criminy, whatever works. Just get me someone I can hand a task to and walk away.
Please do not read this sig. Thank you.
an indication of their IQ, then live code ain't worth a bottle of warm piss
I mean, is their website poorly laid out in a even a 5 yro can grasp this style ?
Nice troll post. Just about only real distinction between a professional and a hobby programmer is that the former gets paid whereas the latter doesn't. I've seen just as much complete crap written by professionals than has been written by so-called amateurs.
Besides, you're missing the point. Everybody should be able to program his computer in the way he or she likes and the tools should be easy to use and completely unrestricted. Nobody forces you to use someone else's program if you have no confidence in his or her abilities.
many commenters, I learned how/got hooked on programming via hypercard/basic
But
are these people representative ? that is, if you gave everyone livecard or hyper card or basic for free, or even you gave them 20 bucks to try it, very very few would ever become programmers in any sense of the word
In the old days,,,,there were way fewer programs, and they were often crap
no one here on slashdot might like to admit it, but the number of programs available for free or minimal cost, and their quality, has gone way way way up
so, do we really need programming for the masses ?
I don't think so
No, no, no.
You're equating self-taught with "monkey+typewriter"
You can learn anything without a formal setting. It's the lack of experience that will burn you if you try to take your self-taught into a career. I don't want a college to lay claim to what I knew already.
Of all your examples, only the self-taught doctor and dentist I'd have an issue with. The liability would be astronomical, and "illegal dentists" do exist, two were arrested and charged this year here. Sanitary reasons mainly.
A self taught lawyer, accountant, plumber, electrician, and programmer are all "comes with experience" types of jobs and trades. It's entirely possible to learn it on your own, but without a certification, the liability question opens up again. In the case of plumbing and electrical work, the handymen who do fix stuff that people break in an Apartment building aren't going to be certified anything. They just learn from experience. When something seriously wrong happens with the building, that's when a licensed one comes in to fix the problem.
And such is the case with programming. Your average self-learner can do a lot of cheap, otherwise crappy code-monkey work, but you likely don't want such a person working on your PCI compliance infrastructure, or anything involving HIPPA. But these crappy code-monkeys are the very people who work in game development, because you might only want one certified developer to push a game, particularly if you're using off-the-shelf game engine components.
Like go back in time, the people who were involved with Sierra and Origin weren't software engineers for the most part. They all started at the same "hey, do you think a game can be made on this?" point in time. Creating games that ran on a box that was meant to be a calculator.
It's not the same as plumbing or electrical work in that aspect, because nobody is going to die if you screwup. And it's not the same as being a doctor or dentist in that you can kill the patient by poking the wrong thing.
Back in the days when doctors had to visit your home (they still do in some parts of Europe) doctors took tremendous risks that would get themselves killed just to come help you. Today that's no longer the case except in some infectious disease cases (ebola.)
Aren't we elite. You realize that a lot of what was down on hypercode was done by domain experts to meet their very specific needs, stuff that would never, ever have been done otherwise. Right?
Yep.
This is ludicrous. You've personally interviewed all self-taught programmers and can confidently assure us that none of them are aware of data structures or algorithmic complexity. I don't think so. I think you're blowing it out your ass.
LOL. It's hilarious how college educated "programmers" always get so defensive when this topic comes up. See how that works?
The real gap is something that will empower users without putting them into danger.
Excel is an example of this approach gone wrong. If you've never been in a company that runs important business processes on spreadsheets, raise your hand. Kids and students, drop your hands. Not many left, are there?
And yet, studies have shown that a large percentage of non-trivial spreadsheets contain errors.
The difficult part in making tools is to make them so that users realize at which point they should call a professional. It's good if you can put a screw into the wall yourself or hang a picture on your own. But it's likewise clear to you that building a house is something you leave to experts, or at least get their advise on wall and floor strengths.
Computers, sadly, are not so transparent. Unless the task involves higher math, too many people think they can program a quick sales database themselves in Access or something. Only when the ceiling does fall down do they realize there's an IT equivalent of structural analysis.
Assorted stuff I do sometimes: Lemuria.org
uh duh. no wonder people get offensive. your saying that they are worthless compared to the all mighty cs majors. everything you noted falls flat on it's face. a self taught programmer can teach himself all those fancy book learning things your professor taught you.
I think your mad because your $200,000 in debt and think to yourself "damn I coulda taught myself all this shit"
basically everything a professor teaches you, can be learned yourself just by using a lil Google fu. get off your elitist high horse. you obviously have bigger issues then blaming others.
The idea of Hypercard begat Filemaker. A little more like a real database, a little less in the way of training wheels. Still really simple to bang out an app in. Still extensible. The way we did it was to make use of its serial or telnet capabilities (way back when) in order to talk to devices or machines.
I realize there's snazzier stuff today but Hypercard didn't just vanish in a puff of logic without anything in between, before this Livecode thing I know nothing about, there was Filemaker. Love it, hate it (more likely) or feel indifferent, but it did more or less the same job as Hypercard. Sure, it was harder to do simple things, but it was easier to do the slightly more complicated things that people commonly needed to do.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
LOL you are brainwashed if you think college is the only place
to become a good programmer.
you herd a college professor tell you that to make you feel good about spending all that money on college. and now you pass around that FUD because it makes you feel like a bigger man that you have a degree. pompous faggot.
I hate people like you.
So we shouldn't have easy-to-use tools for people to LEARN how to program?
We have that, it's called Pascal.
But no, we shouldn't give pseudo-programming tools into the hands of non-programmers for the same reason we don't put handgrenades with half the amount of explosives into the hands of non-soldiers so they can play around and learn a bit - it's dangerous.
Get off your high-and-mighty "professionals are the only ones who can do things" box.
Sorry, when it comes to software with real-world impact, professionals are the only ones who should be doing it. You wouldn't fly by plane if the aviation industries approach to piloting were like what you demand for software, would you?
Assorted stuff I do sometimes: Lemuria.org
They were called Business Programmers and the tools they used were dBase III and Paradox for DOS and PowerBuilder, structured languages that had useful database functionality. Paradox was SQL, oh where art thou Dr. Pauker? Boy did we write great programs, I made a great living off of business logic.
Then came versions of these languages for Windows, redone as object oriented programming and were rendered useless for business. But you could build a mouseable program, which screwed up data entry applications. Data entry programs like donor management apps, but you don't know what I'm talking about do you, because you've never actually used a program.
This change to OO Programming has given us such "professional" monstrosities as QuickBooks, GiftWorks the curse of nonprofits everywhere, and Raisers Edge.
Yeah, Hypercard wasn't the only casualty. So was American business productivity.
Hire from a better university. Good universities teach not just formal algorithms and language structures, but also programming methods and require practical applications to be submitted to pass the subject.
The real problem with university and other formal education is that the setting is artificial and the task always has a solution. When I was teaching assistant back in university days, I took some perverse pleasure from breaking students applications, typically because they didn't do proper input validation or didn't check boundary conditions. I don't think they liked me very much, but if you look at some of the exploits out there you see this exact kinds of mistakes being made in the real world by people who never had to deal with someone intentionally trying to break their precious baby.
Assorted stuff I do sometimes: Lemuria.org
So in a regulated trade such as health care, how should one practice the trade before taking the certification test? For another, regulators often require a specific number of verifiable supervised practice hours, such as 50 hours of supervised driving on a learner's permit in Indiana. Good luck with that if you happen not to have a roommate who drives.
The fact that some professors dont give a crap and hand out "A"s like candy doesnt mean that theres not value in a formal education.
How many of those self-taught people are familiar with the control structure theory that any program can be written using only selection, repetition, and concatenation? How many think that its not relevant, despite the fact that it actually gives rise to readable programs (as opposed to ones that are a mess of GOTOs and multiple entry / exit points)?
You think it doesnt matter as long as the code does the job, and then you need version 1.1 All of a sudden you realize that the self-taught programmer doesnt really understand documentation, or how to craft readable code.
Granted there are a lot of generalizations here-- but I've done the self-taught thing, and I've done the formal education thing, and I find myself wishing I had done far more formal education prior to writing large scripts; as I continue with an education, I realize how much code that I've written over my career was just bad because I did not follow some of the practices I would have learned in a CS class-- and how much better it was because of the little education I did have.
> Other professionals aren't allowed to be self-taught, at least in the civilized world.
You might have a point if CS/IT programs were more like engineering programs, but as it stands today, they're a fucking joke. You get "programmers" fresh out of school who know how to create a web form in Dreamweaver but can't write a working FizzBuzz to save their lives.
Hypercard was retarded quasi-programming for Appletards.
It's a "dramatic opener" to my post, coward. Certainly caused drama for you.
We already have this, HTML5 with a WYSIWYG CSS layout editor and JS for the "logic".
Then again, the whole computing world seems to have gone to crap since WWW was the big buzz.
Just look at the "developers" that crap some half baked "web service" into a cloud computing environment, relying on said environment to spin up more VMs than their code can manage to crash to maintain uptime and load balance. Then it is on to wine and dine the VCs so that they can pump and dump the IPO, and get out of there as fast as their skin tight jeans allows them to move.
DEXCON, DREAMATION, METATOPIA, MAELSTROM, First Exposure and now Envoy are all run on complex HyperCard programs and always will be, thanks to SheepShaver. No other program can come close to handling the complexities of running gaming conventions and projects with the finesse, power and speed of HyperCard.
Vincent Salzillo, President
Double Exposure, Inc.
http://www.dexposure.com
Obviously, you've never had to hire CS graduates. I can't tell you how many of these bozos who've learned in a "formal" setting can barely manage a coherent if/then statement, much less successfully complete even a small in-house application.
There are people who go into a formal CS/CE program because they have a genuine interest in programming. There are also those who go into a formal CS/CE program because someone told them it is a good career path. While the later (career path) can be decent programmers the former (genuine interest) are the ones who tend to truly excel. The later tend to be both formally trained **and** self taught.
Those with a genuine interest in CS/CE tend to learn a lot on their own. And a university setting **greatly** facilitates this. At the university there is an incredible density of like minded folks to learn from or in partnership with. Online and remote can be useful, but two or three in the same room is often better. Plus professors are actually useful, they are often sick of the "career path" type students as well and often are very supportive and encouraging of those with a genuine interest. Besides the like minded folks the university environment offers access to incredible hardware and software that might otherwise be unaccessible. Whenever I asked for access to some specialized equipment (ex workstations with licensed software normally not available unless you are enrolled in a particular class) the professor in charge would ask why and I was never turned away because my project was a personal one, just curiosity. Even professors in other departments were supportive. In grad school I was considering a CS research project that involved a submersible robotic vehicle. I talked to a mechanical engineering professor about the potential project and he was very generous with his time and supportive.
One nice thing about supplementing genuine interest and curiosity with formal university training is that the formal training tends to be a well thought out somewhat comprehensive tour of important topics. Left to oneself the self-taught tend to focus on the more interesting or the more obviously relevant. However some boring and seeming no-so-relevant topics turn out to sometimes be surprisingly relevant and useful. At least that has been my experience, some classes I would never have selected on my own surprised me with their eventual value. While it is certainly possible that the self-taught can read and learn such a comprehensive set of topics at a university level this is exceptionally rare, incredibly rare. In 30 years I've worked with a lot of talented self-taught individuals but I've only met a handful who have the motivation to read and learn things at this level and over a broad range of topics purely on their own initiative.
Obviously, you've never had to hire CS graduates. I can't tell you how many of these bozos who've learned in a "formal" setting can barely manage a coherent if/then statement, much less successfully complete even a small in-house application.
If you are talking about some web based business app done in javascript then going to CS/CE grads may be gross overkill. Its probably better to go to a trade school with classes on web programming for that sort of stuff.
Or if its a more involved business app look for a "programming" degree program in a University's school of business, not its school or science or school of engineering. At my university it was called "Computer Information Systems", it focused on software development for corporate and business needs rather than scientific and engineering needs as "Computer Science" and "Computer Engineering tend to do". Note that things will vary wildly from one university to another so you really need to look at the school and or classes, you can't make assumptions based on "Science", "Engineering", "Information Systems", "Information Technology" appearing in the program name. These are sometimes a bit arbitrary.
>I can't tell you how many of these bozos who've learned in a "formal" setting can barely manage a coherent if/then statement, much less successfully complete even a small in-house application.
I'm going to start teaching CS in January. My approach will be to have the students writing code every class, which will be automatically tested by code that I write for correctness. If they can't get it done in class, they have until the next class (48 hours later) to finish it.
It is somewhat inspired by the code competitions I used to do. If a CS student can't write code to save his life, why is he taking a programming class?
>Granted, most of the self-taught crowd is weak on specialized algorithms and data structures
This is a bigger weakness than you think. Sure, some concepts like hashing and linked lists can be learned pretty quickly by an auto-didact, but the lack of formal training in discrete math means that their code all too often isn't correct. I can look at a recursive algorithm and immediately see when it was written by someone who never learned to do a proof by induction.
Also, their understanding of big-O notation is often (but not always) weak, and they'll tend to just try to use the one or two structures they understand for everything, which leads to inefficient implementations.
While, in principle I agree with you (I learned at a university that had several MIT PHDs in the computer science department - one of which was the head of the department - and later in my career when interviewing new candidates, and working with people from what I will call 'sub standard' programs - I saw first hand that all CS degrees were not equal) - I also realize that the people coming from the top university are going to gravitate to where the money is - meaning if you are a small company, or in a company that can't attract the top talent you will be stuck with what you can get.
This situation isn't bound to change, so how do we deal with this? I think the solution should be multifold and systematic to have possibility of success:
If we don't find a way to something like what I describe, we will continue to suffer as we keep expecting all CS graduates/programmers to be equal. HR and Execs don't like this because they want all developers to be interchangeable widgets...but reality does not bend to policy.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
Firstly, small companies can easily lure talent if what they offer is interesting and their culture is appealing. I would much rather work a 100k job that is interesting in a good company than a 120k job that's boring in a faceless corporation with MBA culture. They'd have to offer maybe 150k and even then I won't be as motivated. Lots of geeks are motivated by interest more than by money.
Secondly, yes we need to make a difference between software architects and programmers.
Assorted stuff I do sometimes: Lemuria.org
And the lusers of the world pissed and moaned because the programmers still hadn't implemented a useful DoWhatIMean(x) function... *LOL*
I do not fail; I succeed at finding out what does not work.
I studied computer science in college but I didn't learn to code until I worked in private practice. This is similar to learning legal theory in law school but learning how to practice law in private practice.
As always, the tech community collectively forgets about a software product type that existed on the Atari ST before it did on the Mac platform. Zoomracks predates Hypercard and it was patented. The author settled later with Apple over it and then the tech community obviously forgot about it.
Star Trek 4 "The Voyage Home" had Scot using a Mac and HyperCard for developing "transparent aluminium". Never saw it used in any other movie.
Favorite scene. Scot "talks" to the Mac "Computer". Is instructed to use the mouse.
My junior high and high school had computer labs full of iMacs. I used to make stop-motion movies and point-and-click adventure games in Hypercard.
We were really really lucky to have 2 Mac labs. HyperCard was absolutely revolutionary. I saw kids make the most hilarious line art animations I will ever see. Ever.
The AVID video editing empire still dominating the video world was born as a HyperCard stack and was one of the best editing programs anywhere! When the guy went into the big time he reversed the name DIVA and it became AVID (and no longer HyperCard but it still revolved completely around Quicktime which was not just a file format, it was a massive video library with a larger codebase than windows 98.)
I never created with HyperCard; however, I knew it was crazy powerful.
If one makes a connection to something you already know, then you grasp it quickly. If the concept is completely new, then you have a hell of a time working 100% of your brain to comprehend the new concept... Later, you can apply that pattern to similar things. Electronics, Programming, Math, Language, Physics, Spacial Relations, etc.
For common situations, the metaphor of CARDS in a stack along with layers helps people grasp things clearly (unless they've never worked with paper etc.) People grasp more when it relates to what they already know and that is why the HyperCard stack and the hypertext stack... and the parens like markup format works so well for billions of people. When needs get complex, the metaphors fail and one must deal with abstract logical constructs... So HyperCard and the others fail.... Yet, similar things continue in the complex worlds of C, where Object Programming really never gave us that much it mostly lets us draw analogies and model huge programs around the metaphorical thinking model of the human brain - so it caught on. (I could do anything OOP thing in C, even create tools to enforce common programming conventions... but we choose OOP because it's easier... but not all the time.)
How about spaghetti code?? That is easy and simple but only for simple programs. So we group code into functions and kill the gosub and register work. All are largely abstractions to help humans program. Now we have extreme OOP in Java which has created complex messes to work around the lack of expressiveness and the complexity of certain problems, such as EVENTS. Event systems are spaghetti again, to some extent are exceptions are too. It's back again... With people looking for the next great solution to abstract these rat nests into something easier to grasp. (One is Regular Expressions which abstract the huge mess of nested conditional logic in pattern searches... perhaps somebody will apply them? Perhaps some abstractions are best done in 2D or 3D instead of 1D text? UML diagrams exist because of the truth in that... but the bridging of the two is still not here yet.)
I actually never knew that about Myst before.
I knew it was a Mac title originally, but I only owned the Windows version on CD. Pretty sure that one was no longer using HyperCard technology (though I remember it did use the Quicktime for Windows player and the QT videos).
In 1989 my colleague, Loranne Dayton, showed me Hypercard. On this Apple computer you had 'cards' (pages), and they could contain links to other pages on that same machine.
I was too stupd to realize the imprtance of what she was showing me. Extent the link with a computer name (from the Internet), and we would have had the World Wide Web, several years before it was invented by CERN. She was years ahead of me.
Did Hypercard die? You're using it's grandchildren, IIS and Apache and Firefox and Internet Explorer, to read this web page today. Hypercard on a global scale.
While this was probably nothing more then an early attempt to get people to code, I remind you the Amiga had the same.
And there is free-software/open source programs while they may not do what closed source does they get the job done, and could do far more if people donated their time and or little money to make them as good as closed source.
I understand people like to do dabble in this and learn for themselves, I 'm not against it but the idiot that wrote the article is either self absorbed, or clueless as to other computers that could allow you to do the same. You look at how complicated todays software is, compared to HyperCard and its like staring a 4 bit porn, when you could be watching the real thing.
>Get off your high-and-mighty "professionals are the only ones who can do things" box. Just because you might have a degree, doesn't mean you know your face from your ass when it comes to code compared to some there people who don't. Just sayin'.
I've seen way more garbage code from those that don't than those that do. Self-taught "programmers" are guilty until proven innocent, if you ask me.
Really?
I wrote an auction website similar to eBay using LiveCode server on Linux. Developed a customer purchase order and invoicing system using LiveCode for Linux.
I am the only person in all of Canada to have a certified Canada Post mailing system (which generates barcode labels, etc.) running HyperCard on Mac OS 9, and still being updated with the latest standards.
My code might LOOK like garbage to you, but it works, and it works well.
I'm self-taught, and I can whip up a LiveCode app in minutes to hours to days what a professional would take weeks/months to do. One app I have that is only a few lines long analyzes our bank statement of 2000 transactions and confirms what cleared the bank and what didn't. All that's needed is download the bank statement from the bank in tab-delimited, and run the code, and in 1 second there's your answer. What does the code look like? Who cares, it works, works well, and works flawlessly (for over 4 years straight I might add).
Just because you have a degree doesn't mean your better at getting a result than those who don't have a degree. I'm tired of this "you need a degree" BS everyone touts.
A friend of mine got a 5-year degree which cost him over $50,000. He worked at low end jobs to pay for university. At the same time, I started my job at a mom-and-pop where I still am today, earning $45K/year at the time. I've developed an entire platform for the company I work for, which never would have been possible by hiring professionals in my opinion. That mom-and-pop company is now a multi-million dollar corporation, with 3 offices in 2 cities. I now earn what my friend does.
So really what you're saying is that you're jealous of people earning nearly what you do, who haven't had any formal training, and can do a good job at it, too.
foot in yourself shoot.
answer the result
I am currently employed as a software developer. Most of my colleagues have degrees; I don't. Yet only one or two of my colleagues can measure up to my skills; the rest produce a bug-ridden, expensive-to-maintain, clumsy-to-use mess. I won't ever say I'm the ideal employee, I know my failings, but when it comes to code, I'm pretty good.
So how did I get there? I'm completely self-taught and it all started with GW-BASIC of all things. Somewhere out there, some young lad or lass is toying with his first computer. Do you want to deny him or her the chance of a solid career on the one hand, or on the other hand the chance of helping out in society by becoming a better programmer than our universities could churn out? Why?
In my opinion, it should be law that every new computer sold must have a beginner-friendly IDE pre-installed and as visible (in the Start menu for example) as the office productivity software that computers ship with today. It should be advertised to children that, yes, with a bit of effort you can write your own software. Little programs at first, maybe, but that's where it all starts and children tend to have more mundane goals than writing the next Word to begin with.
>Granted, most of the self-taught crowd is weak on specialized algorithms and data structures
This is a bigger weakness than you think.
As someone with 30 years of software development experience I can't emphasize strongly enough that some of the biggest mistakes are made in algorithm and data structure selection and design.
To motivate your students share this from a 10+ year video game developer. When they apply for a job at that Triple-AAA video game development studio they will be tested. The test will not center on the intricacies of OpenGL and other topics / technologies that they expect. They will find the greatest amount of that testing will have to do with algorithms and data structures. It is in algorithms and data structures where the performance killing and RAM consuming mistakes occur. Video games have little tolerance for such errors. If you don't display sufficient knowledge of algorithms and data structures you will not be considered regardless of how pretty an OpenGL demo you put together.
I used Hypercard to build educational tools when I worked in the Calgary school system. What a great tool. The only drawback was the no-colour limitation, which I found a work around for anyway. They really should ship apple products with it again.
LiveCode doesn't have background layer, but you can select any set of objects and make them be a group that acts like a background. That makes it possible to reproduce HyperCard's backgrounds, but is more flexible.
Yes, I've heard of LiveCode and have used it. It is fairly easy to learn the basics, but when it comes right down to actually doing anything with it - it is SH*T. It touts itself as a "rapid application development" tool. Well the only thing that is truly rapid about it is how quickly you start tearing your hair out over all its inconsistencies, VERY poorly written documentation and more bugs in it than an old warehouse.
The problem is there are no good certification tests for software developers, engineers, architects, testers, etc... so people use degrees as the replacement.
HyperCard was awesome. It was fairly easy to create a fully functional gui application that someone might pay money for- possibly without writing a line of code. My first serious application was in HyperCard. HyperCard was dog-ass slow though.
I think Apple killed HyperCard because of the performance issues, and because it didn't fit into Jobs' vision. Once they settled on NeXT for OSX, the NeXTStep environment had a lot of cutting edge rapid development features but with the speed of compiled code. They didn't want to develop two separate environments, so HyperCard got the axe.
It is too bad. I would love to see HyperCard alive again.
In computer timelines, I know that Hypercard is ancient. The software wasn't much bigger that 800K bytes and ran from a floppy disk on Mac OS System 6. Hypercard was essentially cancelled by Apple Computer because, when Mac OS System 7 came out, Apple wanted extreme tight control over the graphical user interface of the computer. Apple wrote the "Human Interface Guidelines" and Hypercard broke all the rules. A neat trick with Hypercard of 1987 was, if it was auto booted, it could replace your graphical user interface (GUI) on your computer, and because it was full screen, the menu bars and icons would disappear. Image being able to draw the GUI of the computer with a paint program, which was included in Hypercard, and create hyperlinks to files, applications, and basic interface functions. If one created text fields, a basic database form is created. This is why Hypercard was so cool and ahead of its time, way before the invention of the commercial Internet. As a computer person, listening to computer users, the big complaint over and over again is the GUI forced on them. If the original Hypercard were available today, and you didn't like the "Start Menu" missing or the font change from iOS7 to iOS8, imagine being empowered to change those features, on your own. I have no disrespect for current versions of Supercard and Livecode. I am not familiar with the 2014 versions of those products.
LiveCode's 'background' layer is far more flexible than HyperCard. When applied to a single card it is called a group; share that group on different cards and it's called a background. Maybe you haven't come to terms with this yet, but it is simply 'the next step' for powerful flexibility.
Steve Jobs never wanted people to tinker with his computers. That's why he stripped them down to just a printer and modem port on the CrApple II. Woz wanted to allow the hobbiest to tinker, Steve wanted to sell people boxes that just worked. Hence why he also forced IOS users to use an App downloaded from CrapTunes.
Buy a Rasp Pi if you want to be able to tinker.
I think that AmigaVision is HyperCard for the rest of us.
If anything could or should be re-released, it's AmigaVision.
http://en.wikipedia.org/wiki/A...
Kriston
Right there with you mcgrew. I managed a highly customized dBase accounting app for 10 years. I could make it cook breakfast. I automated tasks that were manual by default, and wrote entire new modules that interfaced with the rest of the accounting data.
After ten years other devs cam in and convinced management to buy a new accounting application from Microsoft for 60,000 (that's cash dollars) plus another 30,000 to customize it... to do... are you ready...? EXACTLY WHAT MY APP HAD BEEN DOING FOR YEARS! And then only SOME of what my app could do. Their argument? It wasn't written in a "professional" language, so it couldn't be very robust. Management bought the argument and went with the Microsoft product.
Oh one last thing: After spending a grand total of $150,000 (that's cash dollars) the company never actually implemented it, because the shithead that started the whole mess turned out to be a HORRIBLE project manager and kept changing things and leaving things undone. THAT GUY was a "professional". Please with the "professional" argument. Makes my stomach turn every time one of them says an app like Livecode or people who use it cannot produce professional apps.
I don't want to give the idea that Livecode can do anything you could do in C or Java. For instance, it could not create a 3D multi role playing game. It doesn't have the tools for that. But for building database apps or great user interface apps, or utility apps that can communicate with other system components or apps relatively easily and fast, it's unparalleled.
Please, visit http://livecode.com/download/ and download the most recent version of LiveCode Community Edition (Open Source) for your OS: (Linux, MacOS X, Windows) If you visit this webpage: http://downloads.livecode.com/... you will find all downloads available, including stable public releases, release candidates and developer previews. Choose one of the stable releases and install it in your computer. Then, you will understand why many developers still cherish and remember fondly, it's first encounter with HyperCard. You could download Livecode's source code from Git: https://github.com/runrev/live... Learn about Livecode's quality controls at: http://quality.runrev.com/ By the way, HyperCard found it's way to many platforms in the form of clones: For Commodore Amiga, there was UltraCard (later renamed Foundation): http://www.dreamtimestudioz.co... For Linux, there was MetaCard (today Open Source LiveCode): http://www.metacard.com/ For Windows, Oracle Media Objects: http://en.wikipedia.org/wiki/O...
>People quickly grasped how to make a picture or
>button show up on every card or just one. Now, if
>you google "livecode background layers," you're
>likely to get instructions to add a background to a
>single card.
You open the group inspector, and click the "backgroundBehavior" box.
That's it. Done.
hawk
Will do. Thanks for the input!
I plan on using some common computer science job application questions as homework assignments, like Fizzbuzz. A friend of mine applied to Facebook and was asked to test a string for being a palindrome, create a linked list class, and write a method to reverse it.
You do have any suggestions for such homework assignments?
Evaluation is done on coding style and the thoughts of the implementor as much as getting a correct solution.
...
Consider a simple problem. Detecting if a point is in a rectangle. The textbook answer is quite simple. The game implementation is not necessarily simple. Keep in mind that textbook answers have lots of preconditions, random data, neutral circumstances, etc. Actual implementation may not, leverage any knowledge of the data or circumstances. For example what is the likely case, point inside or outside; is the rectangle relatively small compared to the screen. Like the SAT pay attention to the details of the question. If the question states that the point is a missile and the rectangle is an enemy unit then the missile probably spends more time outside the rectangle than within, so optimize detection for the miss case. Also since the rectangle represents a unit it will be relatively small compared to the screen. Now think about the screen, is it wider than taller. Probably, if so further optimize your test for misses by comparing against the vertical edges first. Assuming firing takes place from any angle. The really important thing here is to show that you were thinking beyond the textbook and leveraging information about data and circumstances. Such thinking should be explained in comments.
So you've implemented some special purpose variant of an algorithm. You might want to implement the general case too. You might want to add a unit test that verifies that the special purpose case yields correct results for specific known inputs, edge cases etc, and that it matches the results of the generic implementation for some appropriate number of randomly generated cases. Of course doing so would be more appropriate it the evaluation is not timed. But if you finished early and have checked your work
When implementing code consider performance. For example if you need to test the distance between two points a classic implementation might use the distance formula, desired_dist >= sqrt((x2 - x1)^2 + (y2 - y1)^2). Note we don't need the actual distance and we can square both sides, desired_dist^2 >= (x2 - x1)^2 + (y2 - y1)^2, replacing a square root operation with a multiply operation. Be sure to comment the code when doing something like this.
Did I mention that comments should be explaining your motivations, what you are thinking, what you are trying to accomplish? Not simply restating in english what code does.
Knowing how to implement data structures like a doubly linked list would be a good idea, however knowing how to do so in a multithreaded environment is even better. It might be a bit beyond what is expected for students in a lower division class but it would definitely be important at the time of a job application. Perhaps a brief mention in class might be useful, a little hand waiving and telling them to call placeholders lock() / unlock() would be fine. No need to have them actually implement calls to pthreads if their prerequisites don't warrant it.
So, an overall theme. Questions may be less about "regurgitating" the correct answer and more about showing how you think about problems and how you implement solutions, and how well you leverage any additional information available.
It wasn't at a game company but I once had a question during an interview that was very illustrative of what I'm trying to get across. The question listed 6 sorting algorithms and asked for the run time complexity. I answered bubble sort and qsort and then wrote "I own Knuth vol 3 Sorting and Searching so I don't have to memorize this sort of trivia". After this written test the project lead asked why I thought this question a "trivia question". I explained that the textbook run time complexity answers assume random data, and that if your data is not random the run time for these algorithms can change wildly. One algorithm may be the best choice for random data, another for mostly sorted data and still another for mostly unsorted data. I go
Moments after my first post I had an idea. Some of my favorite homework assignments or lab projects were those that were steps towards a larger whole.
Maybe an A* based pathing implementation for a game should be the final result. Individual assignments steps along the path to this end result.
Arrays could implement static objects (obstacles) on a map.
Link lists could implement temporary objects (units, subject to destruction when they fire upon each other).
Maybe sort units in a linked list based on their position with respect to a line of movement, ex moving up sort by y position. As they move into range of enemy units those units at the front of the linked list are the first to come under fire, usually. When hit, destroyed, removed from list. List shorter for next round of fire.
Since its a class project keep things simple. Perhaps something similar to 1970s/80s tank arcade games. The map is a grid. Motion is only up, down, left, right. Obstacles are like walls, filling in an entire grid element or leaving it open. Units take up one grid element each.
Profile performance, before and after some improvement. Textbook A* vs modified A* using special info. Linked list search with and without sorting in direction of movement.
Speaking of profiling, that is something very important to mention in an interview. Attempts to optimize must be based on profiling. Both to make sure one is optimize the code path where cpu cycles are being spent and to confirm that a modification to the algorithm if in fact helping.
I'm not sure if a good fit can be found between the class topics and the components of such a minigame but it might be something worth taking a quick look at.
I can use some of that. I'm teaching 1st and 2nd semester CS in January, and I don't want to overload them too much with philosophy of programming, but I plan on having code reviews be 20% of their grade. They'll have to come up in front of the class and talk about why they made the design decisions they did, and other students can earn extra credit by finding bugs and pointing out questionable decisions.
But yeah, I was planning on doing a maze solver, so maybe a A* solver might be a little more useful. Thanks for the ideas!