This is too funny... makes me miss Mexico lindo. Leaving it at that. :)
Enjoy it!
« May 2008 | Main | July 2008 »
This is too funny... makes me miss Mexico lindo. Leaving it at that. :)
Enjoy it!
Posted by Carlisia Campos on June 21, 2008 | Permalink | Comments (0)
I have finished my first web application in Ruby and Rails. Yeay! I am far from grasping its entire potential, but what I've seen so far has left me tickled. The first thought I had was: wow, you really have to get yourself out of the way and just run with it! Coming from a mindset of having to will your machine into submission, it is quiet a mind twist to surrender yourself to a framework. So, first and foremost, To Rails to me is... to get yourself out of the way!
Everybody talks about how Rails gets a lot of stuff done for you. But seriously, you must have had to go through some major pain before really appreciating what this means. For example... where do I start?
Environment: Do you know how many times I've had to install Apache/Tomcat in my life? With each installation, all the configuration and tweaking around... painful. Do you know, with all the many little ideas of mine that I could have developed a prototype for? Man, if that meant going through this pain for the possibility of little payoff, forget it (I'm not lazy, I simply have tons of projects with bigger payoff probabilities). I love it that everything, including database setup, tests, and configs, are self-contained right in the root of the project. And I didn't have to re-install anything, not once. I even totally forgot there was a server running, I swear.
Folder structure: Just like self-documented code, having a self-documented folder structure can make a huge difference in how productive you are, when developing with other people's code but also even with your my own code. It is also a good indication that you have an idea before hand of what you are going to be developing (if you're not there, go back to the drawing board). I remember when I developed my first serious Java application, I went all over the internet to try and find out how people suggested the folders should be organized. The way I saw it, when I found a good practice guideline I could then employ it forever. And that was indeed the case, but only after studying many different possibilities, since I found a gazillion different but good ways that people were doing it. Can I say I love that I don't even have to think about this with Rails?
I haven't gone deep yet, but some other interesting observations. In the case of Ruby itself, I can see how some people can be very confused with the use of the Boolean type. Coming in with experience in C, where any integer number but zero means "true", I got it immediately how any object that is not "nill" or "false" means "true". Another observation I made is that some aspects of Ruby are not completely unique. I worked with CodeIgniter, a framework for web applications in PHP (I think Zend is similar as well), and the idea of requiring a specific folder structure and working in a RESTful type of way (with actions and resources) existed there as well. But the fact is, when I was working with CodeIgniter I hadn't yet recognized what was happening: one way to put your application together, whether the data was behind a (REST) web service or sitting right here on your machine. Sweet!
Other sweet things that I hadn't had the pleasure to encounter before: I never visited the world of SmallTalk, so I was having a blast with the additional development environment right there on my command line, something totally dynamic. And being the lazy that I am (ok, I am lazy for somethings in that I don't like to do boring, repetitive stuff), I loved being able to generate models, complete with attributes and all related db schema, and all associated fixtures and test files, all with one little line in the command prompt. Hooray! And! Also generating right from the command line the controllers and actions, and views for each of the actions, and again, all associated helpers and tests (both unit and functional!) with one line! And! Not really having to be committed to any of it (I have a commitment issue with technology), it was super easy to drop or change anything! Loved it!
Not all is sweet heaven though. RoR makes me ponder a lot about an issue that worries me in regards to technology. As time goes by, technology is making many things easier and easier to use. This means that people who are not involved in building technology and are purely consumers of it are having to think less and less about some of the things they are doing. Think: calculator, versus understanding arithmetics. What happens when developing software becomes so simple to develop, with frameworks and patterns and recipes that make the job easy to get done by anyone? Will the common denominator be shifted to a lower level? Where will the mental challenge be? I am not worrying about where my next job is going to be. I am fretting about the possibility of ending up with a pool of thinkers that is ever so smaller. Who will I enjoy talking to then??!
One last note about Rails. I am a huge fan of the written word. No matter what language you chose, it is extremely limiting to communicate your thoughts in the written word. Ok, if you want me to be totally technical, it is also very limiting to communicate your thoughts and ideas verbally in any language, but because it can be done fairly fast, you can deviate, and do a lot of trial and error, and possibly get your point across successfully, depending on my things (your audience, your articulation, your understanding, your level of caffeine intake). But try putting it in writing, and all of a sudden you don't have the right combination of words to express it. Okay, this totally sucks (the hindrance in communication) but it serves a great use: it forces you to think about your idea from many different angles, just so you can find a way to write it down cohesively with the tool (language) that you are using. With that said, it is great that Rails makes it so easy to do the test cases that you should be running, because it automatically puts them in there for you and all you have to do is to complete writing them. Ideally, you will use that process (of completing the tests) as a way to uncover the way you are going to code the idea behind your software before you write the code. I am looking forward to trying RSpec and start thinking in terms of BDD.
So, when you completely forget about the things that have been setup in the past, and don't have to think about how to do or structure something now so it won't break your app in the future, it leads to a very Zen, or "in the moment" way of programming. It is a complete submersion in the experience of... coding. The only thing you have to think about is what you are going to code, how you are going to code, and then code. It is not like it, it is meditation itself. Can you imagine bringing your meditation practice with you to work, how cool and awesome that must be?
Hey, wherever you are, there you are.
As a happenstance, I had just figured out I have a problem and am so happy to get the sense it will be painlessly addressed with RoR. When you work to make a living, even if you work for yourself, you have a set of goals to accomplish that end up constraining you. You try to get the job that is going to be satisfying and will provide the types of challenges that will help you grow in the direction that is interesting to you, but as proactive as you can be, at the end of the day you have a job to deliver to someone. And so I just figured out that there is no 1 job that is going to provide me with all the learning and contributing opportunities that I am looking for. I will still have to be proactive in making my day job as awesome as it can be, but I have to look for a complement out there somewhere. If it's not obvious, I'm talking software. On this front, it is so amazing to find RoR at this stage. My inner geek is very happy about finally coming out, AND at a time when (@development = pain) => false.
Posted by Carlisia Campos on June 18, 2008 | Permalink | Comments (2)
Dear husband,
I want to go to these two conferences... It's like 3k for both of them but...
This one has early bird til Saturday:
Business of Software 2008, a Joel on Software Conference September 3-4 2008
The workshop for this one is: "Women in Technology", just cherry on the top:
Technology Review's EmTech Conference @ MIT September 23-25 2008
What do you think? I really want to go... :)
Your loving wife,
-=-Pituchu
Posted by Carlisia Campos on June 05, 2008 | Permalink | Comments (1)
This is part of my recommended strategy to study for the Sun Certified Programmer for Java 2 Platform [1] (an exam that is ridiculously detailed about the Java language) that I posted on javaranch.com right after I passed mine back in 2001. It is a guideline that I would apply if studying for any other certification, I think it would work well.
Select two good books on the subject [2]. First read the books, learn the material (by coding), and do the exercises or samples in the books. Have a notepad and take notes of the topics and you don't know in a way that you can study them (no short notes) from you notes. I recommend going through one book, then take some mock exam, then pick up the other book and focus on the areas where the first mock exam tells you are week at. At this point in the process, I had discarded my first notes and started a new notepad, this time with less topics that needed my attention. After you're done with the second book, start taking more mock exams. At this point you should have a very good idea of your week points. So get cue cards (3x5) and write what you don't know by topics with a full explanation, including examples, one for each topic. For example, for my Java exam I had: methods, inner classes, variables, one for each i/o class, one for each layout manager, etc. Go through these EVERY DAY at least once. If you think you'll end up with more cue cards then you're able to read in one day, it's a sign that you should still be focusing on studying the books and on coding instead of doing the cards or taking mock exams. Once you're working with the cue cards and doing mock exams, write on new cue cards those questions that you get wrong on the mock, even (and specially) if they are the ones you know that you know. You might end up with cards of repeated topics, but that is beautiful because you'll end up reading the topics you're having trouble with twice at least. When you start getting those right you can take them out of the stack. Save the best mock exams for the last days before the exam. Being able to immerse myself in the mock exams and the notes (not watching tv, not doing anything else) for the last 2 days before the real exam was crucial.
Also, try and participate in forum discussions. If there are questions you don't want to answer that's fine. If there are questions you can't answer, that's not a good sign. Searching for the answer and answering questions that you don't know are a good way of engraving that in your head.
Good luck!
[1] Someone at JavaRanch gave a really good tip on studying for layout managers and i/o: read the J2SE documentation. You need to know the classes hierarchy and the methods that they inherit and create. When you're studying this topic and the book presents you a class, have the documentation near and go through the entire class.
[2] I know being the cool geek that I am I'm not supposed to, but I'm a huge fan of books. It's happened more times than I care to keep track that I tried to learn something in depth online, spent a lot of time searching and wading through the good and the bad, and in the end ended up with holes in the whole picture. Good books take a pass on the entire subject, this way you at the least know all what there is to learn. You can always go online and further your understanding on any particular subject.
Posted by Carlisia Campos on June 03, 2008 | Permalink | Comments (0)
It took me long enough to do a write up on Ignite Boston 3, so O'Reilly beat me to it and did a great rundown.
This picture of me does not do me justice, as my better profile is the other side... :) It is Mr. @techpickles I'm talking to over there. More pixs here.
Here my own rundown of what made a big impression:
It was a great pleasure to meet some developers from MITRE. Nice to meet you guys!
Technorati Tags: geek land, ignite boston
Posted by Carlisia Campos on June 02, 2008 | Permalink | Comments (2) | TrackBack (0)
There are few things that I subscribe to in terms of newsletters. But one thing I look forward to reading in my work email inbox every day is the pearl of wisdom the people at Trizzle send me simply from the goodness of their heart. I heart Trizzle. Their motto is:
"Trizle helps your business rock the world."
I don't know what they do for their clients, but their business tips totally rock my world.
Below is one of their posts that I formated to give some personal emphasis and also to fit into a one page Word document so I could print and hang up on my cube (yes, people, I have a cube...). There is a lot more to this post so I recommend reading the original.
Enjoy!
Why Your Future Sucks
Jacko:
1. "In ten years, I will exercise, eat healthy, and live life to the fullest."
2. "But today, I will lounge on the couch, eat chili fries, and live like there are a million tomorrows!"
Lebron:
1. "Next year, I will build the most ridiculous startup the world has ever seen!"
2. "But today, I will read message boards!"
Dikembe:
1. "Tomorrow, I will start on my project."
2."But today, I will relax!"
How We Human People Suck
We psychologically overrate our futures.
Thinking tomorrow will bring us brighter days, we consistently sacrifice our today/now/this-minute time to the freakish wolves.
1. "Tomorrow will be better!"
2. "Oh, don't mind how I suck now!"
3. "Because, I will be smiling tomorrow!"
That's why we:
put things on credit card
take out freakish loans
put off exercise
eat junk food
avoid healthy conflicts
lease expensive cars
procrastinate on our projects
Thinking our futures will be oh-so super-duper-riffic-o, we use our today/now/this-minute-time wastefully destroying that very future.
BOO!
Let's Reframe Our Perspectives
Try this:
1. Stop thinking 'in the future.'
2. Whatever you do for the rest of your life depends on how you spend today/this-minute/this-second.
3. Done.
If you ever start with a sentence with,
"In the future, I will..."
...do this:
1. Look in the mirror.
2. Slap the @#$% out of yourself.
Then tell yourself:
1. "I will most-likely-probably-like-99% never do anything 'in the future'."
2. "If I want something in the future, I make progress -- even if it's teeny-tiny-tiny progress -- toward that future today."
Posted by Carlisia Campos on June 02, 2008 | Permalink | Comments (0)
I just did a ton of reading about virtual goods. I made quite a leap in understanding about this space, something that now is obvious I had little of. When I first thought of virtual goods, I would think of little virtual thingies people exchanged on Facebook. Through the reading I did, I learned that a whole economy could be augmented by utilizing this medium, and my little mind thinks that only the sky is the limit for coming up with creative ideas to enable people and businesses to further their interests in this new arena. This is the type of problem space that is really interesting to develop technical solutions for, because it is new and interesting, and so you get not only to discover interesting problems but also contribute with creative ideas for better technical solutions.
Backing up a little, I think little virtual thingies are silly. And I think it is okay to think so. Although I have never paid for one, I don't, however, dis-merit them, because it is there for anyone to see that a lot of people do. Where I get really excited about is when we start talking branding though. I do have a business mentality and I love to think about solutions that more directly help businesses succeed (in reaching customers, increasing roi, etc). On a personal level, I totally get the appeal for virtual goods like avatar accessories. I loooove Second Life, so much so that I am never there. Whenever I get in I don't care about getting out, and because I also have many Real Life interests and commitments and it... just not good. Anyway, I totally get it because if I had more time (or less outside commitments, I don't know) I would want to... really, have an empire, nothing short of it. I'm talking, buying land, building a business, etc, and, of course, having the coolest looking avatar. I would painlessly pay for it. Although I also get excited about doing my own technical development but, like I said, I can't really go there... Anyway, another thing that gets me really excited about this business is the gift giving part of it. And this brings me back to the little virtual thingies, I know, but it is that now I see and understand a purpose that I didn't see before. What appeals to me the most in this aspect is that I am sick and tired of stuff: I don't want to give them, and I don't want to receive them. Really, in x-mas and b-days about 50% of gifts are good ones, but the other 50% is such a burden that it is just not worth it. I started trying to give people certificate for services (like massages from local businesses), but they don't have/make time to go! Still, we do want to give. And I think virtual gifts are an excellent alternative. Obviously, they are constrained to only being relevant to people who actively participate in virtual spaces (and none of my family is there and only few of my friends are). But it is something to look forward to.
Posted by Carlisia Campos on June 02, 2008 | Permalink | Comments (0)
Up front disclosure: I am a software developer at Eluma.
And if you want, I have some beta invites here.
Everywhere I go I talk about the Eluma Desktop, and explaining all that it can do can take a little bit of time. So I started giving people the short version and directing them here, where they can get my own personal description of what it is that it does.
Eluma is an up and coming startup that offers a desktop tool (RIA) to collect, read, organize and share your web "stuff" and RSS feeds, as well as discover what others have publicly shared. On the sharing front, the cool thing is that you share things not only at the rate of 1 item at a time, like pretty much everything out there, but you can compose collections and share the entire thing at once. Even cooler, once you update the collection, everyone subscribed to it gets the update. At first when you collect an item, it is private, so you have to make it public to share it with others.
It is a revolutionary tool that makes it fast and easy to organize anything you could want to collect on the internet by giving you a repository on the desktop (fast) and a browser toolbar for collecting (easy). There is nothing like it in the market. In a much earlier incarnation, it was selected among hundreds of emerging technologies to participate in DEMO 2006, where it won the DEMOgod Award. According to Technology Review just recently:
TR10: Offline Web Applications
Adobe's Kevin Lynch believes that computing applications will become more powerful when they take advantage of the browser and the desktop.
In other words, desktop web applications are in the Technology Review Top 10 emerging technology in 2008. The Eluma Desktop runs on the desktop and is backed by a web server, which gives users the ability to log in from anywhere and access their data, as well as work offline. The tool also provides many web 2.0 features, such as the ability to share collections and tag, comment, and rate items in collections and the collections themselves. Most of these features are available right on the (IE or Firefox) toolbar. It provides organization capabilities via tags and also folders so as to maximize the range of user types.
If you try it and want to leave a comment, it will be very welcomed. We are working hard in directing the development of features in the way that will be useful to real consumers, not only to our little egos.
Posted by Carlisia Campos on June 02, 2008 | Permalink | Comments (0)


