Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×

Comment Night/weekend (Score 1) 433

"I started looking into local community colleges and universities, and much to my dismay, they offer neither nighttime or online courses for computer science."

I don't know where you live, but I would look into this more. I am not sure what you mean exactly either. Do you mean no local colleges have a computer science course where all classes are 100% at night or on weekends? Or that all classes are during the day on weekdays?

I would take a second look at your local community colleges and colleges and universities. They don't have any night or weekend courses? Also, how local is your definition of local? Let's say there was a college 50 miles from you where you could graduate doing weekend courses - that would be an option - you could drive an hour on a weekend afternoon, take a class, and drive back. My college is nearby, but I know people who commute a long way to get to it.

I would map out colleges and universities by distance from you, then see which ones have a CS program. Then go through their class requirements for a CS Bachelors, and see what prerequisites for each class are (some 300 level classes I took had nine prerequisite classes). Then see when classes are offered. My experience has been the initial level 100 math and CS classes tend to have more schedule flexibility (i.e. more classes are offered at more times) then some of the required 300 level classes. You may be able to get half your credits on nights or weekends before having to worry about a required 200 or 300 level class which is only offered during the week in the daytime.

I would start with one class a semester and see how that goes. If you think you can do two classes a semester and full-time work, try that after seeing how the one goes.

In 2006, I went back to school to get a Bachelors in CS, starting with night and weekend classes. Initially, one of the larger reasons for taking the classes was so that I could show potential employers that I have a Bachelors. This kind of thinking has receded as I have learned more CS and have gotten better at programming. For example, I have a side project where I write Android apps - so far this month I've made $1100 on my Android apps. I would have never have been able to do this if I hadn't learned about algorithms, data structures, Java, and so forth at college. So my thinking now is a little bit less, I need a piece of paper that I can show someone else when I need a job, and is more, what can I do with this knowledge I have gained?

Comment College (Score 3, Interesting) 224

Do you have a Bachelor's degree? I began working as a systems administrator before completing my Bachelor's degree. I have always done some amateur programming, but wanted to improve my skills to where I really was a "programmer". So I killed two birds with one stone and started taking one course a semester at a local college. I would go either at night, or on the weekend. Some semesters I took more than one course.

As I said, I already had written programs. I did not have the deeper understanding to write better, bigger and more complex programs though. The computer science program laid a foundation of calculus, statistics, and discrete mathematics. Then it went deeper into graph theory, and the theory of computation. Then we began learning C++. Then we learned more advanced C++, how algorithms and recursion and so forth worked. Then we learned Java. Then we learned about data structures, and the relationship between data structures and algorithms.

If you just want to learn a little Perl to write some simple scripts, you don't need to do all of this. It sounds like you want to have a deeper understanding of programming though. So this is necessary. I think it is best done at a college, although theoretically someone can learn much of this on their own.

I think the idea of learning programming by "I want to learn one language well" is an amateur mistake. Our learning initially was almost purely mathematical. If you read volume I of "The Art of Computer Programming", he doesn't get into (M)MIX programming until pretty far into the book, the beginning is math. The cursory learning of a programming language was just a byway to then teach us about recursion, backtracking and the like. We immediately moved onto Java instead of going deeper into C++, to see that there were different ways of doing programming by different languages. We later learned radically different languages using different paradigms like logical programming (Prolog), functional programming (Lisp) on top of the object-oriented programming (C++, Java) languages we had already learned.

Eric Raymond once said "Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot." Other experienced programmers have agreed with this sentiment. As you said you're still an amateur, it's probably beyond your capacity right now to understand why someone should "waste time" learning a language like Scheme Lisp which they might end up never using. An ounce of prevention is worth a pound of cure though. The opinion of most expert programmers is that understanding the core ideas of computer science and programming is more important than domain expertise in a particular language. You say "I'll be setting aside an hour every day to devote to learning a new language, in the eventual hope that I can leave this company (take a sabbatical) and hop into the private sector for a few years." You should ask yourself if this is enough. Yes, knowing at least one commonly used programming language is important to get a job as a programmer. You will never really understand that language, and its limitations and advantages, until you learn some other languages, and some of the general concepts behind all programming and computer science. You said you were a novice programmer, and I think putting too much emphasis on learning one language well is an amateur mistake. There's a lot of steps you should be doing before deciding to become an expert in one language.

I'll give a personal example. I do a lot of Android (Java-like) programming. I also need a web API for some of the programs. A server-side Java solution is just too expensive for what I'm doing - sites like Bluehost and Dreamhost don't really support Tomcat and the like for $9 a month. So I use other languages for my web API than Java. Do a Google, or more importantly, a Craigslist job search for "full stack" programmer. Some companies are looking for people who can understand their whole business. They might have a web (HTML, Javascript, PHP), iOS (Objective C) and Android (Java) interface into their API, which hooks up to an application server which could be running Oracle Tuxedo or something like that. You might be concentrating on one portion of it, but having some knowledge of the full stack can be helpful, even necessary.

Comment Capable of complex creation (Score 1) 716

One point others have not made much is this: if you are in IT and can skip college, yes, you can be a good help desk employee. You might be a good database/systems/network administrator. You can even code Javascript or PHP to start putting together a simple website. You are not going to be able to program the type of advanced, complex systems that someone with a BSCS (or Masters, or Doctorate) can though. The only way to do that is to have a foundation of discrete and continuous mathematics, an understanding of statistics, graph theory, computability and computational complexity and so forth. An understanding of how algorithms and data structures interact. How mutual exclusion works. Of how things are fed to the ALU, of how floating point numbers are stored.

If you're going to spend the hours and days and weeks and months and years it takes to study these things, you might as well hook up with a CS program of a decent school, a public school if money is an issue, and learn it there. Most professors know their subjects well (although ones who know their subject well and are great communicators and teachers are rarer). Your classmates are often doing interesting things. Some people say you can study these things outside of college, but why not just go to a public college for 90 minutes, two nights (or on the weekend) a week and get a diploma cheaply? Also, I've never met anyone who has not gone to college, who has learned calculus by themselves, and then studied how limits work for big-O algorithm notation by themselves. They may be out there, but I have not met them.

One of the big problems for people without any college is that they don't know what they don't know. Solutions which will be obvious to someone who has studied computer science over four years (or more) will never even occur to someone who has been putting Javascript together. I tried to write a program in C many years ago which needed threading, mutual exclusion and so forth when I had only the vaguest idea of what those things were. It was a complete mess. Nor did I know it would be a mess when I tried to put it together without understanding mutual exclusion. Which reminds me of an interview question I got wrong many years ago - what is the difference between a process and a thread? I knew a process was more "robust" but could not explain why. And so on. It may be true that school is not the right thing at the right time for someone at some point in their life, but it should be considered in a rational fashion.

Comment Ri-li (Score 4, Informative) 338

Ri-li is a game very young children might enjoy. It has a toy train running around the track, and there's not much to do - just click the button to switch the train tracks if you think it might crash. It has lots of motion and train noises, and is simple. I have heard from more than one parent that their child really enjoys playing it.

Comment My reader, and other readers (Score 0) 415

I wrote (forked, really) a book reader for Android earlier this year which has had over one million downloads since then. So I am obviously Android biased, but I also have looked into the field somewhat.

The main question is, why would you want to get something other than an Android tablet (or "phablet") as a reader? The main reason would be electronic paper - usually using eInk technology, like those Kindle's with eInk technology have. The Amazon Nook also has eInk, and other companies put out electronic paper products as well - Sony, Kobo etc. It is supposed to be easier to read, easier on the eyes, readable in bright sunlight etc. You can go to a store and try it out. Other people have commented about this technology, I have tried it but not on a regular basis. I don't know of any Android e-Ink products unfortunately, although the Microsoft/B&N Nook is a fork of Android.

Then there are Android tablets and phablets. One thing about them is you can choose different book readers - you can choose my book reader, or Google Play books, or the Kindle Android app, or the Kobo Android app, or apps like Aldiko, Moon Reader, Cool Reader, or the open source app I forked from - FBReader. Google Play is getting big on selling regular books like Harry Potter or Suzanne Collins or the like. You can buy them from apps like Kindle Android as well.

Then there's plenty of free apps with free books. My app is free and has free ePub format books in different languages - English, Spanish, German, Dutch, Portuguese, French and Spanish. I will probably be adding more languages in the coming months. All of my ePub books which are free are in the public domain. Most, if not all, of them were published before 1923 and are thus public domain - Mark Twain, H.G. Wells and the like are popular English language books.

Plus, you can use your Android tablet/phablet for things other than book reading. You can buy a 7 inch Google Nexus 7 tablet, which people love. I have a Samsung Tab 10.1 which is 10 inches which I have been happy with. Try them out in a store, see how big they are and how much they weigh. If you are on a sofa or bed reading, how heavy will the tablet be on your stomach? The Samsung Tab 10.1 is 1.25 pounds, which is about the weight of a 500 page hardcover book. Since the weight is more evenly distributed, and not concentrated in the center like a book, it feels even lighter. But there are smaller and lighter tablets/phablets out there as well.

Slashdot has always been a fan of free software, and in terms of my app, it works out well in all directions. I have contributed back to my fork upstream, in the form of things like language translations. My app is on an open source framework - Android. While the app handles more than one book format, it concentrates on the book format which is the standard open one - ePub. My app primarily traffics in public domain, pre-1923 books in a variety of languages, so the content is free-as-in-beer/free-as-in-speech. The app made me over $430 in ad revenue last month. The ads are non-intrusive - originally I had ads over books while you were reading, but when testing it I found it annoying and distracting, so I put up ads before a book opened and hoped that I would still make money even though the ads were not as visible all the time, and it has worked out. Over time I will continue expanding languages, and sending those to my code upstream, FBReaderJ, and perhaps make other improvements and send those upstream as well. It is a free software ecosystem where the benefits flow back and forth in all directions and that has worked out for everyone.

Comment Hyping my free software projects (Score 2) 147

I'm hyping my own projects here, but over the past weeks I've been porting free software games over to Android. Specifically, games that use the Simple DirectMedia Layer (SDL) library. Most of the games are written in C++, and the OpenGL (OpenGL ES in the case of Android) functionality is handled via the SDL library. I have had a good response so far for some of the games.

I have the games as different branches from my tree on Github. My tree is a fork of Sergii "Pelya" Pylypenko's port of SDL 1.2 to Android. One branch is a (partial) port of the popular educational game Tux Math. Another branch is of the game Circus Linux, which I felt did not translate well to Android (at least as I did it) so I never published it to Google Play. I should be putting a few more branches up on Github soon - ports of Ri-li, Hex-a-hop, Ice Breaker and so forth. The Ri-li source will probably be the next one that I will put up.

Comment Some obscure app (Score 1) 1027

You say: "I find it a painful process to go back to an Android or iPhone for some obscure app not yet supported on WP."

The apps which already have Android and/or iOS support, which you also want WP support for, may be obscure in terms of the ones you as a person are particularly looking for. However, there are a whole host of non-obscure apps supported on Android and iOS, which are not supported for Windows Phone yet.

Angry Birds Space. Temple Run. A banking app for Chase Manhattan bank. Instagram. Any Zynga app - Words with Friends, Draw Something etc. Pandora.

Dropbox is an app whose whole point is to be cross-platform. That they don't think WP is worthy of a port yet is a sign.

There's a Nook app for iOS and Android but not yet for Windows Phone, although I'm sure the $300 million deal Microsoft made with Barnes and Noble six weeks ago will change that. At the moment, Lumia owners are still out of luck due to the deal. It just goes to show that popular apps are not written overnight.

Is there a database app that can handle Microsoft Access files on Windows Phone? AFAIK, there is not. There is one for iPhone and Android. I should know, I wrote the one for Android. If you want to search through a Microsoft Access database file on a mobile phone - with Microsoft Access being included in most of the Microsoft Office suites I've found at large companies and universities - you have to buy an Android or iPhone.

All of these are all popular apps on iPhone and Android which are not on Windows Phone. Then there apps which have been ported to Windows Phone, but which reviewers say are much worse than their iPhone and Android versions. Rdio is one example, according to Techcrunch and Gizmodo reviewers - they love the Android and iPhone version, but think the WP port is sub-par.

Comment Release date (Score 1) 207

The Lumia 900, #7, was released last month in the US. The Galaxy S II Epic 4G Touch, #4, was released in September of last year.

The Lumia 900 is more than six months newer than the Galaxy S II Epic 4G Touch which, with the rate smartphone innovation is going, is half a lifetime. Yet that older S2 release with its older specs is beating the 900. What is going to happen to the 900 when phones like the Samsung Galaxy S III become available? The S3 is going to become available in Europe at the end of this month, and will soon be available in the US as well.

Comment Invent your own computer games with Python (Score 1) 525

I have a relative around that age who knows a lot about the Xbox and iPad. I remember from my Commodore 64 days how these machines were not "walled gardens" and how I could start programming in BASIC as soon as I turned my Commodore 64 on. So I looked for some programming books for him.

I looked at a lot of books. I suggest cursorily flipping through the first few chapters of books you consider. It came down to two books, I don't recall what the second choice would have been. I picked Invent your own Computer Games with Python. Why? Because Python is a good tool to teach kids a language, but it is also used for real stuff out in the world, it is not a toy language like BASIC. Because kids are interested in games at that age, and with this they can program their own. And because it is basically written for kids and beginners - it is not a "learn Python" book for someone like me, who already knows C, C++, Java, PERL etc. and is just picking up one more language.

I bought a hard copy of the book, but it is also online for free on their website. He mainly uses an iPad, so I installed a free SSH client for iPad so he can ssh into an account I created on my web server and run Python. My web server had an old version of Python, so I installed a local copy of the latest Python and redid the PATH for the account to hit the local python binary first.

I'm still mulling how he can edit programs. I used nano (and vi) when I first was showing him, but might download scp for iPad and an editor for iPad, so he can scp the programs. I want to make it as easy as possible, and he can learn harder stuff later.

Aside from the book needing Python 3, which just made me have to do a little work, so far so good with the book.

Comment 20 years of Linux (Score 1) 1091

Last year Linux celebrated its 20 year anniversary, as Linus began writing it in 1991 and released it that same year. For myself, I'd have to think more deeply about it to determine exactly what year I first started using Linux, but it was definitely between 1993 and 1995. I installed my first Linux on a non-brand-name laptop with the Slackware distribution. It required many, many 3.5 inch disks to install (I forget how many disks it was if you wanted to install X-Windows - it was a lot). It used LILO as the boot loader.

My next Linux desktop I began using in February 1996. It was at a small startup - so small actually that initially the machine doubled not only as my desktop, but as a server of sorts. The machine had a pre-1 kernel, but the previous sysadmin upgraded it to Linux 1.X the first day I began working. The /proc/meminfo file in Linux had recently had a cached column added to it, which broke top and some other things, although the previous sysadmin dealt with that snag as well. FVWM was my window manager. The machine was susceptible to the "ping of death", and this was before firewalls, NAT, iptables and the like were widespread in use.

Linux as a desktop has come a long, long way since then. Even in the past few years, the Linux desktop has come a long way. A lot of people have done work on this, but Ubuntu has been a big part of this, and is what I currently use on my desktop. One example - when installing my new Ubuntu system, it sets up what is necessary to get the disks and network connection in order, and then it simultaneously starts downloading needed packages from the Internet while I go through the rest of the system setup menus. If I finish all the setup before everything is finished downloading, I can cycle through a promo which shows me which features Ubuntu has. This is the kind of thinking that has been needed for Linux on the desktop - every previous Linux install I remember consists in me doing system setup, and then I have to wait for the downloads to start and finish. Even though it is a little more of a pain to implement from the developer's point of view, Ubuntu gets those downloads started as soon a possible, and I don't have to wait that extra time that I'm doing the rest of the system setup - and if I finish before the downloads, I have a promo to look through where I can learn about the system. Not a big thing, but an example of the kind of thinking needed.

To a point others have addressed - nowadays there is server, desktop, laptop, tablet and smartphone. Linux is dominant on smartphone, and has a very healthy-sized chunk of tablets. With the Nook, the Kindle Fire, as well as the pure Android tablets like the Samsung Galaxy Tabs, the Xoom etc., and this year Ice Cream Sandwich tablets coming out, I'm confident Android (and thus Linux) will grab more of the tablet market. What I have not seen mentioned here (maybe I missed it) is that tablets sales have been cannibalizing desktop sales, and the traditional desktop is growing less relevant over time for the average consumer. Just like people here are saying desktop Linux is mostly only relevant for techies like us, in the future desktops may become mostly relevant only for techies like us, or people doing things like 3d modeling and the like. With a Bluetooth keyboard (foldable or solid) and a tablet, you can already do a fraction of what the desktop can do, and that will only increase with more powerful tablets, new software and so forth. And Linux is a big player in this domain. I think the efforts to improve desktop Linux are good, but I think efforts to promote Linux are currently more productive in the areas where it already has a significant position: servers, smartphones and tablets.

Right now Apple and Android are in a real race for dominance over smartphones and tablets, and Windows is throwing its hat in the ring with Windows 8. I think Microsoft realizes it has lost the smartphone race for the next few years, and will be concentrating on tablets, where the race is still open to some extent. I'm sure their tablets will come with Word, Excel and so forth, which will give them an edge in this space. The app which can do some Word/Excel functionality on Android, Documents to Go, costs $29.99. And people need it, it has over half a million purchases. There is really no good, say, open source Excel-compatible spreadsheet for Android right now. I should know, I wrote the most complete open source Excel-compatible spreadsheet for Android that is out there right now. And "most complete" is strictly in a relative sense - it is really a prototype that I put aside once I hit the stumbling block of trying to load Excel 2007/2010 OpenXML files (it can do pre-2007 though). It has had some interest from other developers, but interest has not been that high. Anyhow, in terms of efforts to promote Linux, you want to concentrate on the more productive channels. I think it is good to push forward on all channels, but I think writing software (even non-FLOSS!) for Android tablets is currently the best place to concentrate efforts from a purely promotional standpoint.

Comment Tickets (Score 2) 120

With regards to the ticketing system - if someone posts a ticket for a problem, see if you can reproduce the problem with their particular version. See if the problem still exists in the head of the latest code trunk. See if the problem is a duplicate of another problem. See if the problem is with the program, or somewhere upstream, say, a library that the program depends on. If so, report the problem upstream.

Core developers are busy, and most projects can use people who deal with and clean up tickets, leaving only real problem tickets to deal with. Also, sometimes a program or library from Gnome or freedesktop.org will have tickets in the trouble ticket systems of Debian, Ubuntu, Fedora, SLES, Gentoo etc. Someone doing a little coordination will be helpful.

The thing is, even top notch programmers unfamiliar with a large program are initially at a disadvantage to a middling programmer who is well-familiar with a large program. Everyone is initially at a disadvantage when a program breaks, no matter what the skill level. But even if your programming skill level is very low, most projects can benefit from extra help. Even if you just confirm a bug exists on your system too, or that you can't reproduce a bug - this helps core developers save time.

Comment The slope of FLOSS jobs (Score 2) 506

There is something of a slope of what FLOSS in an organization is, from Richard Stallman, who is a purist, all the way to companies which will use (but not contribute) Apache/BSD source in their code, or run a GPL application.

I've used FLOSS associated with my job for a long time. From the mid 1990s on this was as a Unix Systems Administrator. I've installed Linux (and back then, FreeBSD also) servers at companies since the mid 1990s. I've installed open source software like Apache, BIND for DNS, and Tomcat. Various mail packages like sendmail, exim, qmail. Some of the comments mention small companies, but I've installed and/or maintained open source tools in everywhere from small startups to Fortune 50 companies.

Also, over the past year I have learned the Android API better, and Android is, of course, an open source platform. My entire development process for Android is very open source based. I do development on an Ubuntu Linux desktop with the open source IDE Eclipse. I also often include Apache code in my code, or sometimes LGPL, or sometimes even GPL code. I even released Android open source - I was building a spreadsheet, got pre-2007 Microsoft Excel (.xls) loading OK, but hit a snag with Excel 2007/2010 (.xlsx), so I open sourced what I had so far ( https://github.com/dennis-sheil/android-spreadsheet ) and will do some more work on it if I have the time.

I released several of my own Android apps over the past year. You're talking about making money on this - I made over $15 in ad views yesterday. Not enough to earn a living, but an extra couple of hundred dollars a month does not hurt. Some independent Android developers have put up blogs, like Droid Blog, or Kreci, or others, they've been doing it longer than me and are making thousands a month, not hundreds.

Plenty of people have written advice on how to push for open source solutions at a company. Just suggesting often it isn't going to do the trick, you have to package it in a certain way, get buy-in from the stakeholders and so forth. You might not always succeed, but sometimes you will.

Comment Linux games have been having a lot of success... (Score 1) 142

...on smartphones and tablets, particularly Android and its derivatives.

Cut the Rope is 99 cents with at least half a million downloads. There are two unknown factors - how many returns were there (downside) and how many over 500k are they (upside). So they've made around $500,000 on this app.

GTA III on Android - 4.99 and over 100,000 downloads - another $500,000 in revenue. And a lot of the graphics and engine code was already written.

I had a chat with one of the Big Mountain Snowboarding developers ($2.99 times 5000+ is $15,000, plus an ad-based Android version with over 500,000 users) who told me that over 85% of the C++ and OpenGL code from their iPhone version could be reused in their Android version. Companies with an existing C++/OpenGL code base don't have to re-invent the wheel to get on Android.

Fruit Ninja : $1.26 * 500,000+ = $630,000. Doodle Jump: $0.99 * 500,000+ = $500,000. Madden NFL 12: $4.99 * 100,000+ = $500,000. And so on. Then there's the money games make on their free, ad-based versions. As I said, many of these games have existing C++/OpenGL code on another platform, so the half million in sales, plus more in ads, that they've made thus far, is money they made just for the port. Which also helps keeping you in the game if some competitors want to take these established games on in this newer platform.

Android is a Linux kernel, with the rest of its code open source. Tim Bird and others recently started an effort to bring the Android developers and Linux closer together, so hopefully that will bear fruit.

Comment So which is better to own? (Score 1) 136

I develop for Android and own a Samsung 10.1" Galaxy (Android) tablet. I know someone who owns an iPad.

Several months ago, I wanted to give them SSH access to a server. So I looked at what iPad had to offer. I could find no free SSH client (as of a few months ago). Not even an ad-supported one. The best I could come up with was a nagware one - it allowed you 500 or so SSH keystrokes and then logged out and asked you to buy the client.

Meanwhile on my Android tablet, I have a free SSH client. It doesn't even have ads, it's open source! ConnectBot. There are other free Android ssh clients as well, but ConnectBot works for me so that's what I know.

Admittedly, I know more about Android than iPad. But the one thing I ever needed from iPad, I couldn't get for free. On Android I could. So which would I want to own more?

And as I said, I develop Android apps. If there was no good free SSH app for Android, I could have developed one. But there was one - ConnectBot. ConnectBot has no ads, but I would have been perfectly happy to have used a free SSH app with ads.

There are many revenue models for applications. Most of the top free apps have various alternative methods of getting revenue - and not just the apps like Facebook or ESPN Sportscenter. Ads are just one method, there's also upselling, and other revenue models.

At the end of the day, the real question is not what's good for the developer, but what's good for the customer? We have a platform that is developer-friendly but not user-friendly, it's called the Linux desktop. I like platforms that are good to developers, but there are many ways Android is good to developers that Apple is not. It costs me $25 for life to publish and Android app, without any application approval process (not $99 to $299 a year like Apple). I can publish the app anywhere, not just Apple's walled garden App Store. I can write and compile my app on Linux, Windows, Mac or whatever - I don't have to buy a Mac and then get Xcode. And it's not no one ever buys Android apps - some apps have made millions of dollars in sales (that we can see - in-app sales, ad revenue etc. is less visible). The revenue model just depends on the particular app.

Slashdot Top Deals

"A car is just a big purse on wheels." -- Johanna Reynolds

Working...