Download a Static Version of Your Site

You should backup your website yourself on a regular basis. It is after all YOUR web site, right?

We see questions in help desk tickets that are usually phrased differently like “how can I get a static version of my site?” or “do you use FTP” or similar but basically it’s the same question. And it is a great question. At Tendenci we believe that while all vendors don’t have to be open source like Tendenci is (full source code available at https://github.com/tendenci/ ) they should at least make it easy for you to get your content. But they don’t. So let’s show you how to get it anyway.

Let’s pretend you want to download an entire static (meaning not-database driven but looks almost identical) version of your site on a Mac. First the free way to do it:

Download wget for your Mac. The easiest way is using the Rudix packages (Note – I’m typing this on Sept 10, 2015 so with time, check it to be sure it is still safe.) http://rudix.org/packages/wget.html

wget-for-mac

Then you have to launch terminal. I know terminal is kind of scary if you haven’t used it much so I’ll show you a paid version way of downloading your site in a sec. First the “free” way. Launch terminal on your Mac. It should look something like this:

terminal-window

The next line looks complicated. It kind of is, but just copy and paste it replacing the part that reads MYWEBSITE with your web site. You do have to include the “http” part so it’s easiest to go to your site in a web browser and copy it from the address bar.

wget --limit-rate=400k --no-clobber --convert-links --restrict-file-names=windows --random-wait -r -p -E -e robots=off -U mozilla MYWEBSITE

In terminal I highlighted in blue the part that I typed in. In this case I was making an offline backup static site for our client http://www.texasliver.com (Dr. Galati is awesome!)

wget-down-a-site

Everything after the blue part (and again copy from where I pasted it above just change the URL to be yours), but everything after the blue part is just the system starting to download the files. It DOES cause load on the server so perhaps don’t run it at lunch or during high traffic times. When it’s done you should be able to see it in finder and it should look about like this.

texas-liver-downloaded-site

BUT, this isn’t currently on a web server. Still you can view it in yor web browser by clicking the “index.html” file for example. When viewed as offline files the browser bar look kinda like this:

exporting-web-site-to-files

And BOOM! You have all of your files for free! Even if you made a mistake and went with a proprietary vendor a while back. You CAN get your files.

Bonus round for the uber geeks. If you want to make and build wget on your mac yourself you can use these lines of code (check for newer versions as this blog post ages of course):

cd ~/Downloads/
curl -O http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz
tar -zxvf wget-1.15.tar.gz
cd wget-1.15/
./configure --with-ssl=openssl
make
sudo make install
rm -rf wget-1.15
rm wget-1.15.tar.gz

Thanks and let’s hear it for Open Source Software like Tendenci. And here’s to open source software like “wget” that allows you to get a static copy of your site even from proprietary vendors and their long contracts. Freedom is good.

Lastly a few (some paid) alternatives to download your site:

http://ricks-apps.com/osx/sitesucker/index.html

For windows you can google it although I can’t vouch for any of these products so be sure to run your virus scanner and watch for bad guys as always.

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=sitesucker%20for%20windows

Elon Musk on Work Ethic

“Constantly seek criticism. … A well thought out critique of whatever you are doing is as valuable as gold.”- Elon Musk

and….

“If you do the simple math, if somebody else is working 50 hours and you are working 100, you’ll get twice as much done in the course of a year as the other company.”

“Just work like hell. You’ve gotta put in 80, 100 hour work weeks.” – Elon Musk

“Starting a business. Number 1 is having a high pain threshold.” – Elon Musk

“You are always going to buy the trusted brand unless there is a BIG difference.” – Elon Musk

“Constantly seek criticism. … A well thought out critique of whatever you are doing is as valuable as gold.” – Elon Musk

“Usually your friends know what is wrong. They don’t want to tell you because they don’t want to hurt you. … Usually your friends are right. …. You should take the approach that as an entrepreneur you are wrong. You want to be less wrong.” – Elon Musk

#listen #endure #powerthrough #succeed

Translations, Client iphone and Android Apps

A few cool things in the land of Tendenci clients and open source users internationally to share.

Client Created iPhone and Android Apps

Kudos to www.hapl.org and the developer Jaime Lossada who created this application for the iphone and android on top of Tendenci. This was completely the work of Jaime so if you have questions please reach out to him directly.

HAPL iPhone App by Jaime Lossada
HAPL iPhone and Android Apps by Jaime Lossada

We just think it’s cool to see what “Open” software enables people to do versus closed-old-world-options.

Translations

And we’ve had a few requests lately for translations via Transifex as well as new languages to add. Transifex it integrates with github and Open Source Projects like Tendenci.

Translations for Tendenci via Transifex
Translations for Tendenci via Transifex

You can check our our Transifex project for Tendenci. It’s crowd-sourced translations for open source projects.

Tendenci Newsletter Generator – It’s Back!

First – let’s talk about the NOW. Newsletters are back in Tendenci 6!!

Newsletter Generator for Nonprofits
Tendenci’s Open Source Integrated Newsletter Generator

Tendenci’s Open Source Integrated Newsletter Generator

A lot of long time clients have resisted upgrading to the responsive-mobile-first-open-source-version of Tendenci 6, or even the responsive designs in Tendenci 5, because of one killer feature in Tendenci 4 (the old Microsoft version) and that was NEWSLETTERS.

We listened. We heard you. It’s back.

The ability to communicate with your membership by study group, by event attendees, to only the board of directors, etc. We heard you loud and clear and the newsletter generator is back in full force in Tendenci 6. To prevent the tragedy of the commons (e.g. another client blacklisting a shared email server) we are requiring clients to use either their own SES or a product like Mailgun.com for the newsletter. This will offload the sending to the third party and each client can manage their own newsletter statistics for the first time.

This also alleviates another area of pain. If one client out of 500 ish purchased an email list and the bounce rate was too high, well, then EVERYBODY got slammed and nobody could even do a “forgot my password” request because another client blacklisted the mail server. It’s just the way the Internet works. Why can’t we all just get along, right?

If you are on Tendenci 6 (not an automatic upgrade from T4 or T5 because we pushed more of the design to the front end … um…. where it belongs and the designers can do their thing. Rock on you artsy folk who make software look awesome. More freedom for you. (just please no comic sans, ok?)

If you are on T4, which is approaching end of life very quickly as I type this (Microsoft, not Tendenci dictated these dates so please don’t send email asking if we can secure something Microsoft isn’t patching anymore).

Turn a negative into a positive. Now is a great time to consider a mobile first bootstrap 3 theme that integrates with Tendenci 6! They’re smart, mobile first, responsive, and make you a rock start. Check out www.wrapbootstrap.com for bootstrap3 themes. They’re kinda awesome like this:

Affordable Themes for Tendenci Sites
Bootstrap3 themes for Open Source Tendenci!

 

Just one of the many new functional mobile-first capabilities that have been built into open source tendenci since we started the rewrite in 2009.  This is functionality we have been able to bring back with the help of the Tendenci community.

After 17 years we know the functionality the people who use the site to register for events need, as well as the needs of the people on the board-of-directors and the person functioning as Executive Director. It just takes a while to rewrite 10 years of code in a completely different technology. And we’re just getting started!

Check the help file for the Tendenci Association Newsletter Sending Tool for more detail and edits over time.

HOW TO USE DJANGO-SQL-EXPLORER IN TENDENCI MMS

tendenci6megamenu.png

Tendenci 6 ships with the excellent django-sql-explorer from ePantry. This means you can export anything at any time and build any report you want whenever you want. Absolute 100% anytime freedom of access to your data. #JOY #FREEDOM #ROCKS

First a warning. If you choose to use a direct query tool know they are dangerous. You are doing so at your own risk and could possibly corrupt your database beyond repair up to and including requiring a dba to come in and repair it at a cost of thousands of quid. So…. BE CAREFUL.

SQL explorer is a way to directly query your site through the user interface. It is for superusers only and we recommend disabling it by default (see disclaimer above.) But if you are still reading here is the lightning version.

  1. Login to your Tendenci6 site at /accounts/login/
  2. Navigate to /explorer/
  3. Click on playground and test out some queries. For example here are two
    1. “select tablename from pg_tables” – without the quotes to list all 300 tables in your database
    2. “select * from articles_article” – list all articles including expired and inactive etc.
  4. If you like the queries click “new query” and name and describe them and click save.
  5. Click on the SQL explorer icon top left and your back at the dashboard with icons to download the results of your queries.

Visually when you add the URL /explorer/ to the end of your site path you will see something very similar to this.

django-sql-query-dashboard.png

First note the icon on the right to Download CSV so you can download all of whatever that query is for.  If you don’t see any, no worries – that’s what this post is about!

So let’s write a basic sql statement.

django-sql-playground.png

And then when you click “New  Query” you will find this interface and you can carefully name and describe your query so you know what it does later.

creating-new-tendenci-query-for-csv-download.png

 

1) ALL Interactive users:

SELECT  u.first_name, u.last_name, u.email, u.username, u.is_staff,  u.is_superuser, p.salutation, p.company, p.position_title, p.phone,  p.address, p.address2, p.member_number, p.city, p.state, p.zipcode,  p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone,  p.home_phone, p.mobile_phone, p.notes, p.admin_notes FROM auth_user u  INNER JOIN profiles_profile p ON u.id=p.user_id WHERE u.is_active=True  AND p.status=True AND p.status_detail='active'

Copy Paste Version:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone, p.notes, p.admin_notes FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id WHERE u.is_active=True AND p.status=True AND p.status_detail=’active’

2) ALL memberships:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser,
    p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, 
    p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, 
    p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone,
    m.membership_type_id, m.renewal, m.certifications, m.work_experience,
    m.referer_url, m.referral_source, m.join_dt, m.expire_dt, m.renew_dt,
    m.primary_practice, m.how_long_in_practice, m.application_approved,
    m.application_approved_dt, m.areas_of_expertise, m.home_state,
    m.year_left_native_country, m.network_sectors, m.networking,
    m.government_worker, m.government_agency, m.license_number,
    m.license_state, m.status_detail
FROM auth_user u
INNER JOIN profiles_profile p
ON u.id=p.user_id
INNER JOIN memberships_membershipdefault m
ON m.user_id=u.id
WHERE u.is_active=True
AND p.status=True
AND m.status_detail <> 'archive'

Copy Paste Version:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone, m.membership_type_id, m.renewal, m.certifications, m.work_experience, m.referer_url, m.referral_source, m.join_dt, m.expire_dt, m.renew_dt, m.primary_practice, m.how_long_in_practice, m.application_approved, m.application_approved_dt, m.areas_of_expertise, m.home_state, m.year_left_native_country, m.network_sectors, m.networking, m.government_worker, m.government_agency, m.license_number, m.license_state, m.status_detail FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN memberships_membershipdefault m ON m.user_id=u.id WHERE u.is_active=True AND p.status=True AND m.status_detail <> ‘archive’

3) ALL corporate members:

SELECT cp.name, cp.address, cp.address2, cp.city, cp.state, cp.zip, cp.country,
    cp.phone, cp.email, cp.url, cp.number_employees, cp.chapter, cp.tax_exempt,
    cp.annual_revenue, cp.annual_ad_expenditure, cp.description, cp.expectations,
    cp.notes, cp.referral_source, cp.ud1, cp.ud2, cp.ud3, cp.ud4, cp.ud5, cp.ud6, 
    cp.ud7, cp.ud8, cm.corporate_membership_type_id, cm.renewal, cm.renew_dt,
    cm.join_dt, cm.expiration_dt, cm.approved, cm.admin_notes, cm.status_detail
FROM corporate_memberships_corpprofile cp
INNER JOIN corporate_memberships_corpmembership cm
ON cp.id=cm.corp_profile_id
WHERE cm.status_detail <> 'archive'

Copy Paste Version:

SELECT cp.name, cp.address, cp.address2, cp.city, cp.state, cp.zip, cp.country, cp.phone, cp.email, cp.url, cp.number_employees, cp.chapter, cp.tax_exempt, cp.annual_revenue, cp.annual_ad_expenditure, cp.description, cp.expectations, cp.notes, cp.referral_source, cp.ud1, cp.ud2, cp.ud3, cp.ud4, cp.ud5, cp.ud6, cp.ud7, cp.ud8, cm.corporate_membership_type_id, cm.renewal, cm.renew_dt, cm.join_dt, cm.expiration_dt, cm.approved, cm.admin_notes, cm.status_detail FROM corporate_memberships_corpprofile cp INNER JOIN corporate_memberships_corpmembership cm ON cp.id=cm.corp_profile_id WHERE cm.status_detail <> ‘archive’

4) All users in a specific group (replace <YOUR GROUP ID> with your group id)

SELECT ug.name, u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN user_groups_groupmembership ugm on u.id=ugm.member_id INNER JOIN user_groups_group ug on ug.id=ugm.group_id WHERE ug.id=<YOUR GROUP ID> AND ugm.status=True AND ugm.status_detail='active'

Copy Paste Version:

SELECT ug.name, u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN user_groups_groupmembership ugm on u.id=ugm.member_id INNER JOIN user_groups_group ug on ug.id=ugm.group_id WHERE ug.id=<YOUR GROUP ID> AND ugm.status=True AND ugm.status_detail=’active’

 

 

 

Contribute back your brilliance to the rest of us? Have you written some good queries for Tendenci using the amazing  django-sql-explorer from ePantry? Post them on the Tendenci Community Site for others to learn and share with!

Please do be careful. Remember the warnings above. Using a live sql tool on a relational database for anything besides SELECT queries is ill-advised. It really is your live data on a live site SO BE CAREFUL!

We believe this level of access to the superusers on Tendenci sites is empowering. We like knowing people can download any of their data when they need it. And perhaps contribute back some suggested new reports to the Tendenci Community as a whole!

Because Tendenci is part of the Django community and we couldn’t have brought this functionality to you without others in the community “giving first.” We may have added it to Tendenci, but that’s ONLY because of the generosity of building and making it available by others. Explorer is brought to you by the power of collaborative open source software (THANK YOU ePantry!)

Note this is a cross post from our help files. See the Help File for the latest accurate info at: https://www.tendenci.com/help-files/how-use-django-sql-explorer-tendenci/

Tendenci Presents at OSCON: Make your Open Source More Open – Conquering the Accessibility Challenge

OSCON 2015 Presentation in the Main Hall

Tendenci was honored to be invited to speak at OSCON (the Open Source Conference) this July in Portland to run a work shop on the accessiblity challenge in software and web applications.

CEO of Tendenci, Ed Schipul was joined by blind motivational speaker Rachel Magario along with moderator Becky Leven from Tendenci to run a workshop examining some of the challenges and tackling workshop participants own individual projects on the accessibility front.

You can view the workshop slides on slideshare: https://www.slideshare.net/upload?quickupload_experiment_source=newsfeed

 

Open Source = Unemployed, & This ROCKS! – A 2014 SXSW Interactive Talk

Portrait of Sarah Worthy
Portrait of Sarah Worthy
Sarah Worthy

Join Sarah Worthy, Director of Product and Chief Experience Officer (CXO) at AuthorizedCV, a health IT startup in Houston, and Ed Schipul, CEO of Tendenci for their 2014 SXSW Interactive workshop: Open Source = Unemployed, & This ROCKS!

Worthy and Schipul will give their predictions about the effects of open source software/hardware on the economy and the implications it has for tech giants like Microsoft and Intel.

The workshop will take place on Tuesday, March 11 from 9:30am until 10:30am at the Courtyard Marriott on 300 E 4th Street.

To register, go to the workshop’s page. We hope to see you there, and don’t forget to hashtag! #sxsw #thisROCKS

Houston Writeathon Talk From the February Netsquared Houston Meetup

Netsquared Co-Organizers: Jeff Reichman & Sarah Worthy Portrait Photo

Every month at The Stag’s Head Pub, nonprofit innovators, startup entrepreneurs, civil servants and social influencers meet to talk shop. The February NetSquared Houston meetup was visited by Greg J Micek, Founder of the Young Inventors Association of America and Jeff Reichman, the Principal at January Advisors.

 NetSquared Houston February Meetup Attendees

This month’s meetup was riddled with interesting startups and nonprofits ranging from Kandy Kruisers, a Houston company that builds skateboard and skateboard accessories, to the Houston Center for Literacy, a nonprofit working to increase adult literacy in the city of Houston.Greg J. Micek Portrait

Greg J. Micek – IQ Biometrix & YIAA

Among the speakers, was Greg J. Micek, President of IQ Biometrix, a company that creates facial recognition software, and founder of the Young Inventors Association of America (YIAA).

Greg talked about the 26th Annual Young Inventor’s Showcase, to be held at the Wolff Center of Entrepreneurship, in the C.T. Bauer College of Business at the University of Houston campus on May 24, 2014. The showcase aims to promote creativity and innovation among students from Kindergarten through 8th grade.

 

Jeff Reichman – Open Houston & The Houston Writeathon

Jeff Reichman PortraitPerhaps you’ve heard about a marathon. How about a hackathon? A writeathon? If not, you have now!

In conjunction with Open Houston and The City of Houston, a group of volunteer designers, writers and data scientists are teaming up to streamline the local Houston government’s communication strategy.

Reichman says, “It’s about diversifying the pool of people who are civically engaged. Our key is to get writers and designers to communicate universally outside of language, because people assemble data in different ways.

The Houston Writeathon aims to improve government communication through building infographics that simplify processes, drafting petitions onto Change.org and working with affiliated organizations on general communication tactics and strategy.

The city provides so many services that just aren’t marketed. We have to be able to rally the talented and improve our surroundings if we want to improve local government,” said Reichman.

The event will take place at the Freed-Montrose Public Library on Saturday, February 22, from 10am to 5pm. They are still looking for volunteers and all are welcome. Get involved with the Houston Writeathon here.

If you’re interested in coming to any of the NetSquared Houston meetups, you can find out more information here. Attendance is free and meetings are held monthly at the Stag’s Head Pub on Portsmouth Street. See you there!

As a bonus, to demonstrate how much fun a writeathon can be when you get a bunch of creatives together in a room. The group wrote this techie Valentine’s day story tag-team style:

The Story

It’s Valentine’s Day, the year 3000. I’m cruising on my spaceship, headed to pick up a bouquet of flowers, when I look over to my artificial girlfriend that I’ve created from a 3D printing lab and ask her, “What color would you like?”

“Wow,” she says. “I’ll defer to you.  This is worse than the time I had to jump out of a train after my old boyfriend, which made me lose my legs. I had to get them replaced by an open source firmware running on a 3D printer. My previous legs were shorter so I decided to get new ones to make me taller. What do you think about augmentation, honey?” She asked me. 

Ignoring her comment, I remembered I had a 3D printer on board and decided to print the flowers myself. As I was doing that, the 3 moons and 2 suns began to rise over the horizon and it reminded me of when I first downloaded her from Github. At that moment, a horrible thought struck me, as I plummeted out of the sky, crashing into Earth and destroying it. I’d forgotten to put space gas in my space gas tank…

Meanwhile, at a bar on the other end of the universe, the women toasted to the destroyed earth, celebrating the end of man and all his artificial girlfriends as they had pillow fights and braided each other’s hair.

 

“Old Developers Just Don’t Get it. Yes They Do. No They Don’t” – Ed Schipul and John-Michael Oswalt at Ignite OSCON

Ignite OSCON Ed JMO

This week, we sent our CEO Ed Schipul and Programming Manager John-Michael Oswalt to speak at the Ignite session of OSCON 2013 Open Source Convention in Portland!

Ignite’s format is made up of five-minute presentations using 20 slides that auto-advance every 15 seconds – known as “speed dating for ideas” by some.

 

Take 5 Minutes and Watch this Video!

Below is Ed and JMO’s five minute talk on the generational differences of programmers – particularly Millennials vs. Gen Xers – and how that has influenced Tendenci’s development.

“Old Developers Just Don’t Get it. Yes They Do. No They Don’t”

 

Thoughts? Please share in the comments!

Come Brainstorm Ways to Use the City of Houston’s Big Data for Good with Netsquared this May!

houston netsquared logo 2012 twitter

 

#NET2Houston will host the City of Houston and Houston’s Civic Hackers on May 14th for our monthly meetup at Stag’s Head Pub. RSVP on the Netsquared Houston meetup group.

 

Houston’s City Data Goes Open Source

I’m really excited about our upcoming event, where we’ll learn about the City of Houston Hackathon to kick-off the City of Houston’s Open Data Initiative.

City of Houston Open Innovation HackathonBruce Haupt, from the City of Houston’s Finance Department, will share the vision of Mayor Annise Parker and Council Member Ed Gonzalez for utilizing Houston’s Open Data Initiative to improve our city.

Bruce will show you some examples of how initiatives like this have benefitted other cites, and tell you about some of his favorite projects. You can view a few ideas the Mayor’s office has developed on the HoustonHackathon.com Projects page.

We’re going to also be brainstorming our own ideas about how open City data sets can help advance civic-minded causes in Houston!

Learn More about Open Data and Your City

Open source data sets are rapidly being released by local, state and Federal governments regularly now, and thanks to newer technology frameworks, like Django and Rails, it’s easier than ever to connect to different databases and sync or share data sets.

Here’s 3 awesome links to get quick facts and juicy details about the City of Houston and Code for America’s Open Data and Innovation projects:

1) The Code for America App database aims to be the “most complete and up-to-date database of government and civic software”, according to their website: (http://commons.codeforamerica.org/apps/), and some of the apps they have listed are really incredible and they’re open source.

ckan_logo_box2) The open data portal software that Houston’s data portal will utilize is called CKAN. CKAN provides the tools needed to enable and manage file and data sharing between two databases. Learn more about Code for America’s open source data portal platform: http://commons.codeforamerica.org/apps/ckan.

3) Read the Mayor’s Press Release announcing the Hackathon and Open Initiative Program launch: http://www.houstongovnewsroom.org/go/doc/2155/1762955/.

How Will You Use the Data for Good?

Tuesday May 14th – Join us for Netsquared at Stag’s Head Pub

Come share your ideas for using the city’s data with Bruce and other civic-minded hackers and techies. Your ideas on how to use these data sets can dramatically improve our community by providing us with more accurate, real time data about our city’s resources and how they’re utilized.

May 17th-May 19th – Join us at the Houston Hackathon

The City of Houston will Kick-Off the Open Data Initiative with a weekend long Houston Hackathon.

Ed and I will be sharing Tendenci t-shirts and stickers at the Hackathon, and we’re available to help with your project if you need an extra geek. If you’re interested in using Tendenci’s open source platform for building a city data app, come find me because I have a few ideas about how nonprofits and associations might want to use public city data with their websites and membership databases.

Join Us Tuesday, and Bring a Friend!

Leave your comments below if you have ideas to share, and follow the conversations on Facebook, too!

“Like” Net2Houston on Facebook

“Like” Tendenci on Facebook

RSVP for the Houston Hackathon Pre-Launch Happy Hour on Facebook