Author Archives: Susan Veoni

Class Reflection

Class overall: I was excited to take this class because I knew it was going to be quite different than my other PR/CC classes. Overall, I’m coming out of class with a better understanding of the fundamentals of web development, and why it’s important for today’s marketing/communication professionals and journalists to be well versed in this field.

The first few weeks were overwhelming and a bit difficult to grasp everything. Coding is very detailed with so many moving parts, so when Greg told us to only concentrate on the bigger concepts — it was challenging. But, I’m happy Greg reiterated this throughout the semester – by learning the broad concepts and utilizing WordPress, you are capable of creating a customized website.

What I learned: My expectation of the class was to learn enough coding skills to create a website, as well as learn how to better communicate with developers – and I think this was accomplished. In addition to learning basic coding skills (HTML, CSS, PHP, JavaScript), I gained knowledge about how to actually setup a website. I never heard of MAMP, GitHub or CyberDuck before this class, so learning these applications was tremendously helpful. I had some WordPress experience prior to class, but now I feel much more comfortable with the Admin and Codex. I also learned that taking a class like this is going to be very frustrating at times, but I’m happy that I’m coming out of it with better problem-solving/troubleshooting skills.

Why it matters: Learning about web development is going to matter more and more as we progress in our careers. From the developer profile assignment, I learned that the working relationship between developers/designers and digital marketing/communication professionals is extremely important.

What I’ll do with the new knowledge/skills: I plan on drinking more wine so I can add additional content to my site 🙂 There’s also more customization that I’d like to do, such as incorporating a photo slideshow. The knowledge/skills gained from this class has already helped me in my current job and will continue to in the future. My department at work is implementing WordPress by the end of the year, and I will have a key role in the CMS/front-end. I don’t think I would be as excited about using WordPress at work if I wasn’t for this class. Clearly companies are catching on by investing in this platform, so it feels good to know that I have experience working with WordPress.

Thoughts on initial readings: I feel much more comfortable about the concepts explored in our readings from week one. The readings about “thinking” talked about looking at programming from a broader perspective… I can appreciate this idea much more having lived through creating a website. I also enjoyed re-reading the WordPress philosophy and really took to the 80/20 principle:

“The rule of thumb is that the (WordPress) core should provide features that 80% or more of end users will actually appreciate and use……That should allow all users to find the remaining 20% and make all WordPress features those they appreciate and use.”

After the class ends: Although we covered a lot of different topics in class, I don’t recall learning about Python. I keep hearing that it’s the “latest and greatest” language to learn. Maybe I’ll check out a Codcademy lesson or tech blog to see what all the hype is about. After this class, I think there’s going to be a lot of that — reading industry blogs — to further my skills and knowledge.

Q&A with Developers from Blackboard and Zoomph

I interviewed two professional web developers in an effort to get two different perspectives. Some overall takeaways are: both guys have amazing jobs that they really enjoy; both were somewhat self-taught and recommend continuous learning to keep up with latest trends; both are advocates of agile/scrum processes; and both provide great insight about working with communications/marketing professionals.

Hardian Muljadi, Senior User Interface Designer at Blackboard Inc.
Lee Kohn, Lead Developer at Zoomph

1. What is your professional background? Why did you want to become a web developer?

Mulijadi: My background was in computer science and business administration. My first job out of college was as a web designer, having experience in both website content management and development. I was very comfortable working in code, but I knew that I wanted to do something more that involves working with people; gathering requirements, figuring out what makes user tick, and designing a solution that solves their problems. Additionally, the web development field was on the rise, and with my background it felt like the right industry to get into.

Kohn: I became a developer because I’ve always liked building things and tinkering with computers.  Doing web development allows me to get paid to do something which has always been a hobby of mine.

2. Did you invest in formal training, or were you self-taught?

Mulijadi: I took some courses back in high school and college to learn the basics, but for the most part of my professional career I was self-taught. I followed many web design blogs and attended conferences to gain more knowledge on the field and meet some of the key players in the industry.

Kohn: I have a BS in IT from GMU which prepared me for a lot of the infrastructure and business related topics however most of my software development expertise has come from a lot of reading on my own time and on the job training.

3. What advice do you have for writers/marketers/project managers that would help make your job easier? Any tips for a more effective working relationship?

Mulijadi: Most are advice for project manager:

  • Don’t schedule unnecessarily long meetings; especially when it involves a lot of people, it’s a lot of wasted manpower and cost to the company. When facing critical issues, facilitate a smaller group with only the key people to tackle the issue at hand; stay with this group until the issue is resolved.
  • Be conservative at estimation; it’s better to deliver a working feature on time than to promise something more robust that is impossible to accomplish.
  • Update the team as often as you can on progress and due dates; in my company we have daily scrum meetings where everyone on the team shares 1) what they’re working on and 2) what’s blocking. Take advantage of scrums to get a sense of everyone’s progress and where you can intervene to help unblock issues so work can continue and project stay on schedule.

Kohn: I could go on for days about this one, but the top ones would be:

  • Computers are dumb.  They are only as smart as the requirements for the software and the person implementing the requirements.  It is of utmost importance to be very specific in requirements since details which are left out will require the developers to guess as to what the author meant.
  • Scope creep is very bad. Developers generally like to be flexible when it comes to changing requirements however the desire to be flexible usually comes at a cost to quality since last minute changes are generally poorly thought out and are rushed through development leading to bugs and poor overall quality.
  • The difference between can and should.  Software development is very open ended, computers can do just about anything you ask of them.  This doesn’t necessarily mean that you should do it. When developers say that something is possible they usually mean it is feasible; not necessarily that it is a good idea to do.  For example something may be possible but could require $100,000 worth of servers.
  • Please understand the difference between (web) developers and web designers.  Web designers are generally graphic designers who happen to know enough HTML and CSS to create a static web page.  They cannot make a website interactive (at least not well).  Developers are for the most part engineers who are focused on more ‘backend’ types of work such as databases.

4. What are some best practices you can share regarding web development?

Mulijadi: Technology is always changing. Everyday somebody figures out a better and more efficient way to do something. Keep up with the latest trends so you can anticipate market direction and cost of building things. Blogs, books, podcasts, and conferences are some of the best way to keep up with the latest and greatest.

Kohn:  This is another one that I could go on for days about.

  • Security within web applications is something that shouldn’t be taken lightly. Most non-technical people don’t even think about security related issues until they’ve been hacked. As developers it is our job to point out any security risks and develop secure software even if we are not explicitly asked to do so.
  • Plugins are a great way to get a site built quickly but will very often make tweaking functionality very difficult if you can’t read/understand how the plugin works. Also plugins can a lot of the time interfere with each other. Using them can be very tempting but in my experience they tend to be more trouble than they’re worth in the long run.
  • Code organization and quality are very important. You can get away with sloppily written and un-organized code while a piece of software is small. Once the size of the codebase starts getting large having a properly architected codebase becomes very important to maintainability and extensibility.
  • Comment your code. You may remember what that line of code does right now but in six months you won’t.

Agile: best practices and being done

The Agile manifesto and best practices video really hit home for me. Remember early on in class when we had all of those glorious ideas about what our websites were going to look it? I initially wanted to build a custom slideshow using JavaScript… and that clearly did not happen. It’s takes a lot of time to plan out and create a personal website, and being realistic about what you can and cannot accomplish in a given time period is critical.

I immediately thought of work while I was watching the Agile video. I work on a project management team that builds a variety of digital programs for various clients. One of the most difficult aspects is getting on the same page as the client, and delivering a product that they truly wanted in the first place. It’s a constant give and take between exceeding the client’s expectations and not going outside the statement of work (putting more time in than we are getting paid to do). The principles of Agile are key to ensuring you deliver a valuable product, on time and on budget.

One of the most intriguing best practices that Jay talked about in this video is how you should only have the team members who are working on the project provides the estimate. I could not agree with this more. At work, we are always running into issues with the sales manager promising things to clients that we simply cannot deliver.

At the end of the video, Jay talks about the definition of done, which takes me back to our class sites. While there is a shared opinion of what “done” means, Jay says that one of the core tenets of agile is that when the team declares the project done, it needs to be in a releasable state. I think this was the ultimate goal for class. Yes, we are never actually done with working on our personal sites — there’s always going to be content and customization to add — but having a site that is functioning and ready to launch means that we are DONE. And right now, that’s a good feeling.

Side note: I’m really happy we went through a critique phase for our sites. I appreciate all of the feedback I received! Getting user feedback is truly an important part of creating a website.


Few Mishaps this Week… But Ready to Launch

I can’t believe it’s already time to present our sites. In nine weeks, I went from knowing very little about web development to having a fully functioning website. Not only is the visible aspect of the site gratifying, but having knowledge about the “behind the scenes” coding and application part (MAMP, GitHub, GoDaddy and Cyberduck) is just as rewarding.

Last week I felt pretty good about my site – the functionality was complete, all I had left to do was add some content via my custom post type (CPT). When I began adding posts, however, I quickly realized that my site was not “calling” my CPT posts – it was only calling the generic posts built into the theme. After some good-old Codex research and collaborating with Charlotte, we discovered that we needed to add a filter that would “get my CPT posts.” Four lines of code later, we got it to work – but I wasn’t out of the woods yet.

In addition to creating my CPT called ‘wine,’ I created two custom taxonomy categories (region and year). The plan was to have each post searchable by year or region. While my CPT and taxonomies were showing up just fine in the Admin for last few weeks, I realized this weekend that only my ‘region’ taxonomy works properly in the actual posts. This was very frustrating because I created the region and year taxonomy the Exact. Same. Way. Trust me, I looked at this code for about two hours yesterday.

At this stage of the game, I decided to delete the ‘year’ category and just roll with the ‘region’ category. I plan on troubleshooting the problem again because having the ‘year’ category would be nice, but since our sites are due today, I decided it’s better to have the site working without the additional taxonomy than having a malfunctioning site.

Looking back at my initial pitch, my site is pretty much on par with what I set out to accomplish. But, now that I know substantially more about coding/programming than I did back then, I wish I had time to do more. I’m looking forward to further developing my site, but for now, I’m at happy place.

Excited to see everyone’s sites on Tuesday!

Advice for next time: Always check that your theme is supported by ALL browsers. I learned the hard way that my theme (Magazine Basic) is not supported by Chrome, so please view in Firefox or Safari.

Today Was a Good Day

My goal this week was to finish the main coding aspects for my site, which consisted of creating a custom post type (CPT) for “wine” as well as custom taxonomies for “region” and “year.” For every wine post I add, I’d like to associate the region and year of that wine. Last week, I attempted to create the CPT as a plugin and also in my functions.php file – both attempts failed (the CPT would show up on my local site, but not my real site).

This week, I took another shot at creating a CPT plugin and also adding custom taxonomies. After doing a little bit more research in the Codex and reading the Smashing Magazine CPT article, I finally got it to work by dragging the plugin file I created into Cyberduck! I initially tried to upload the zipped plugin file through the WordPress Admin, but I got an error message. I’m always quick to use the Admin, but in this case, dragging the file into Cyberduck was the only way it worked. I’m very happy to finally have my CPT and taxonomies showing up on my live site. As Ice Cube would say, today was a good day.


The reason for adding custom taxonomies was not only so I could sort my wine posts, but so visitors of my site could also have an easy way to sort through various posts. For example, if someone is only interested in wine from Napa Valley that was produced in 2008, they could choose those custom taxonomies and the site would generate all posts relating to those specifications. (This is assuming I had a variety of posts that met the criteria.) Simply creating a CPT/custom taxonomy plugin, however, wouldn’t automatically display the taxonomies in each post – this required more coding changes. Thanks to a little guidance from Greg, I determined that I needed to write a simple conditional statement in my content-footer.php file so that the custom tags (region and year) would be visible in each post. Another small victory when this actually worked for me!

My overall tip is to take the time to understand what and why you are changing something in the code. The possibilities of what to change in the code is endless, so it can be very overwhelming. For this project, I decided to concentrate on one major change (create a custom post type/custom taxonomies plugin) and try to understand everything there is to know about that plugin…what the code is actually doing, etc. I’m still no expert, but I hope that by having a good idea about what my first custom plugin is doing will help me make future coding changes – faster, easier and with less headaches.

WordPress White Screen of Death

This weekend I was determined to create a custom post type (CPT) for my wine website. My initial plan was to create the CPT as a plugin, since that’s what Greg recommended. It turns out that’s a little more complicated than I thought it was when we went over the concept at 9:15 p.m. last Tuesday. I browsed the Codex for a refresher and did many Google searches, but unfortunately I couldn’t figure it out. So I moved on to plan B and placed the CPT code into my functions.php file. Once that step was complete, I connected to my local server and checked my WordPress admin panel. It was a miracle…my new “Wine” CPT button was added right below the comments button.

This was a great accomplishment, but having the CPT only display on my local admin won’t do me any good in the future when I want to add content. So I decided to commit/sync and drag my updated functions.php file into Cyberduck in an effort to get my CPT to show up on my web admin panel – piece of cake, right?

Wrong. After Cyberduck was finished downloading, I refreshed my website… and screamed because the screen turned white with a fatal error message. This was the first time I received an error message of this magnitude, so I was freaking out. But instead of throwing my laptop across the room, I deleted the functions.php file from Cyberduck, and that apparently fixed the problem. But, I’m still without the CPT on my web admin menu.

Sidenote: I found this handy “Common WordPress Error” resource page in the Codex, which I will now be bookmarking.

I want to revisit plan A – creating the CPT as a plugin – but I plan on doing some additional research before experimenting again on my site. For now, I will continue making style changes in the css and gathering content that I plan on incorporating.

Command Line
I have to admit, I was a little skeptical about learning command line. Isn’t clicking easier than typing? But after actually going through the motions in class and browsing the readings, I understand why command line could be very useful in some situations. In my job, I often have to convert image files to different formats. Sure, clicking a button or two to convert one image is definitely faster. But, what about 1,500 images… in a short period of time? Typing a command that’s a few lines long would be much more efficient.

Getting More Acquainted with My Theme

It was great having Andy come in and speak to the class. While I didn’t grasp every single thing he was talking about, I now have a better understanding of the capabilities of WordPress. His discussion about child themes was especially useful for me. I’m happy he listed the 3-4 parent (and very basic) themes he recommends for creating child themes. I initially was thinking about using a very complex theme for my site, but I have now decided to go the more simple route with a theme called magazine basic.

After downloading my new theme, I spent some time looking through the various code and browsing the admin section. Since I’m creating a child theme, I know I definitely will have to create a new directly that includes a style.css file. But what about the other parent theme folders? Do I only drag the ones I want to edit into the child theme directory? I know I want to create a custom post type, which will be done through code, but what file do I create the code in?

I also spent some time trying to understand the differences between the local server and the web server, and how they “talk” to each other – for lack of a better word. I successfully connected to my local server and starting making very minor changes through the Admin section and was able to instantly view the changes on my local site (which was pretty cool!). But I’m having difficulty being able to view the changes on the web (even though I commit/synced files on GitHub and successfully connected to Cyberduck). Is it because I made changes through the Admin and not the code? My new theme is showing up, just not the text changes I made.

Ah.. so many questions still… but finally feel like I’m starting to comprehend what I’m doing.

Veoni Vine

I had every intention of doing a portfolio website for my final project. I thought that improving my amateur-looking WordPress site would be the best use of my time. But after diving into HTML, CSS and JavaScript (cringe), I quickly realized that it would be more fun to build a site that incorporated all new content and focused on a true passion of mine.


My husband and I like to think that we have a fairly exclusive wine collection, especially for a couple of 28-year-olds. We even have a few bottles that aren’t supposed to be opened for another 15-20 years. With that long of a wait, it’s difficult to remember where we got it, what food goes well with the wine, what year we should open it, etc. And let’s face it, in 20 years my memory is just going to get worse. So… my idea is to create an online wine cellar that houses all of our elite bottles with images, descriptions and food pairings. In addition to the wine cellar, the website would include a blog so I could document my wine experiences (such as visiting a winery, enjoying a good bottle of wine at dinner, highlighting a new local wine maker, etc.).

As far as the audience, my husband and I will benefit most from the site, at least at the beginning. But I plan on linking to blog posts from my social media channels so other people will know about the website. And who knows, maybe one day there will be a paid Virginia winery ad on the homepage. #winedreams

Post Updates
Description: Veoni Vine will feature images and descriptions of my personal wine collection, as well as highlight my various wine experiences through custom blog posts.
-Have a digital wine cellar that features prominent bottles from Italy and the US.
-Write blog posts to document my wine experiences (winery trips, dinners, etc.)
-Generate followers and encourage people to share comments on the blog posts.
Audience: My husband and I, friends and family, and hopefully other wine enthusiasts.
Achieving goals: I plan on using a WordPress template that is simple and is easily customizable. To ensure everything is organized nicely, I plan on creating custom post types. I also plan on sharing the website through social channels to drive awareness.
Theme: Magazine Basic (
Functionality & Design:
-Create a child theme
-Develop a custom post type and taxonomies for ‘region’ and ‘year’
-Change the look of the theme by altering CSS code
-Import social media widget
-Add content (at least five collection bottles with images and descriptions, and one post highlighting winery experience).

To have a child, or to not have a child?

Theme that is. I’m happy we had a few reading assignments this week to get more acquainted with WordPress themes and plugins. After reading the Child Themes section, I think it makes sense to create a child theme for my site – primarily because it is the easiest way to modify an existing theme.

This concept of modification reminds me of the “refactoring” term (from our first class), which refers to changing internal code without affecting the external meaning or behavior. For my site, I want to use a lot of images (maybe even a slideshow with captions!). So finding a theme that already supports this seems like the best option. But what if I only want three photos to rotate instead of 5, which the parent theme came with? I could easily make that change to fit my needs by altering the code, but the change is minimal enough that it will maintain the original look.

The “refactoring” term is also very prevalent at my job. We build a lot of custom emails/newsletters for clients. They are sold as “custom,” but let’s be honest, there’s only so many ways you can put together an HTML email template. So, we are frequently reusing templates and making minor changes to fit specific clients’ needs. Why go through all of the steps every time if you can simplify it, right?

Side note about class in general: I feel like I have learned so much in these last five weeks, and it’s very exciting. However, I don’t think I have a solid grasp on everything I’ve learned. I’m particularly concerned about remembering the actual logistics of setting up my self-hosted website. From MAMP to GitHub, and Go Daddy Domains to Cyberduck, I’m still confused about how all of these elements work together. I hope we can go over the process again next class.

Light at the End of the JavaScript Tunnel

I’m happy to report that this week was much easier for me compared to last week. I breezed through the two jQuery lessons, which was a good self-esteem booster because I actually felt like I knew what I was doing. I’m not sure if jQuery is easier than JavaScript, or if completing the JavaScript tutorials last week helped me better understand the jQuery lessons. Part of me wishes we would have started out with jQuery because it seems a lot simpler to wrap your head around, and then go into learning the basic concepts of JavaScript. But who knows what the best approach is? I think you can argue it both ways.

In last [Tuesday] night’s class, I thought it was helpful that Greg walked us through the take-home assignment of adding captions to our galleries. I also appreciated that he assured us that the objective here is not to memorize the code, but to grasp the overall concepts. This morning, one of my colleagues said something about JavaScript that really resonated with me. He said, “I’ve never really written any JavaScript, but I sure do manipulate it.” What he was getting at was that he knows enough about the overall concepts that he can edit or change existing JavaScript code to make it do what he wants. Looking back, this seems to have been the goal of the gallery assignment.

I’m excited that we are now in the process of setting up our hosting site for our final projects. (But who knew there were so many steps involved!?) I wanted to mention one thing about purchasing your domain from Last night I created an account and added my chosen domain to my “online cart,” but I didn’t actually purchase it. This morning when I woke up I had an email from GoDaddy saying that if I complete my order by July 2, I can use this special promo code to get 30 percent off. So… in case you haven’t purchased your domain yet, this is one way to save on the cost!